Java 示例 - 队列实现

  • 问题描述

    如何实现队列?
  • 解决方案

    以下示例显示了如何在员工结构中实现队列。
    
    import java.util.LinkedList;
    class GenQueue<E> {
       private LinkedList<E> list = new LinkedList<E>();
       public void enqueue(E item) {
          list.addLast(item);
       }
       public E dequeue() {
          return list.poll();
       }
       public boolean hasItems() {
          return !list.isEmpty();
       }
       public int size() {
          return list.size();
       }
       public void addItems(GenQueue<? extends E> q) {
          while (q.hasItems()) list.addLast(q.dequeue());
       }
    }
    public class GenQueueTest {
       public static void main(String[] args) {
          GenQueue<Employee> empList;
          empList = new GenQueue<Employee>();
          GenQueue<HourlyEmployee> hList;
          
          hList = new GenQueue<HourlyEmployee>();
          hList.enqueue(new HourlyEmployee("T", "D"));
          hList.enqueue(new HourlyEmployee("G", "B"));
          hList.enqueue(new HourlyEmployee("F", "S"));
          empList.addItems(hList);
          System.out.println("The employees' names are:");
          
          while (empList.hasItems()) {
             Employee emp = empList.dequeue();
             System.out.println(emp.firstName + " " + emp.lastName);
          }
       }
    }
    class Employee {
       public String lastName;
       public String firstName;
       public Employee() {
       }
       public Employee(String last, String first) {
          this.lastName = last;
          this.firstName = first;
       }
       public String toString() {
          return firstName + " " + lastName;
       }
    }
    class HourlyEmployee extends Employee {
       public double hourlyRate;
       public HourlyEmployee(String last, String first) {
          super(last, first);
       }
    }
    
  • 结果

    上面的代码示例将产生以下结果。
    
    The employees' names are:
    D T
    B G
    S F