如何在 java 中实例化队列对象?

2022-08-31 07:16:58

当我尝试:

Queue<Integer> q = new Queue<Integer>();

编译器给我一个错误。有什么帮助吗?

另外,如果我想初始化队列,我必须实现队列的方法吗?


答案 1

队列是一个接口。除非通过匿名内部类,否则无法直接实例化接口。通常这不是您要为集合执行的操作。相反,请选择现有实现。例如:

Queue<Integer> q = new LinkedList<Integer>();

Queue<Integer> q = new ArrayDeque<Integer>();

通常,您可以根据感兴趣的性能和并发特征来选择集合实现。


答案 2

A 是一个接口,这意味着您不能直接构造一个。QueueQueue

最好的选择是从已经实现接口的类构造,如下所示之一:、、或 。QueueAbstractQueueArrayBlockingQueueArrayDequeConcurrentLinkedQueueDelayQueueLinkedBlockingQueueLinkedListPriorityBlockingQueuePriorityQueueSynchronousQueue

另一种方法是编写自己的类,该类实现必要的队列接口。除非在极少数情况下,您希望做一些特别的事情,同时为程序的其余部分提供.Queue

public class MyQueue<T extends Tree> implements Queue<T> {
   public T element() {
     ... your code to return an element goes here ...
   }

   public boolean offer(T element) {
     ... your code to accept a submission offer goes here ...
   }

   ... etc ...
}

一个更少使用的替代方法是构造一个实现 的匿名类。您可能不想这样做,但是为了覆盖所有基础,它被列为一个选项。Queue

new Queue<Tree>() {
   public Tree element() {
     ...
   };

   public boolean offer(Tree element) {
     ...
   };
   ...
};

推荐