如何在java中实例化一个Queue对象?

当我尝试:

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

编译器给我一个错误。 任何帮助?

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

Queue是一个接口,这意味着你不能直接构造一个Queue

最好的select是构造一个已经实现Queue接口的类,如下所示: AbstractQueueArrayBlockingQueueConcurrentLinkedQueueDelayQueueDelayQueueLinkedListPriorityBlockingQueuePriorityQueueSynchronousQueue

另一种方法是编写自己的类来实现必要的队列接口。 这是不必要的,除非在极less数情况下,你希望做一些特别的事情,同时为Queue的其余部分提供一个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 ... } 

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

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

Queue是一个接口。 除非通过匿名内部类,否则不能直接实例化接口。 通常情况下,这不是你想要做的收集。 相反,select一个现有的实现。 例如:

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

要么

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

通常情况下,您会根据您感兴趣的性能和并发性特征select一个集合实现。

 Queue<String> qe=new LinkedList<String>(); qe.add("b"); qe.add("a"); qe.add("c"); 

Queue是一个界面,你不能像你所做的那样创build它的实例

队列是一个接口,你不能明确地构造一个队列,你将不得不实例化它的一个实现类。 就像是:

 Queue linkedList = new LinkedList(); 

这里是关于这个主题的Java教程的链接。

队列是java中的一个接口,你不能这样做。

相反,你有两个select:

选项1:

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

选项2:

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

我build议使用option2,因为它比另一个快一点

在这里输入图像说明

Queue接口通过额外的插入,提取和检查操作来扩展java.util.Collection,如下所示:

+offer(element: E): boolean // 插入一个元素

+poll(): E // 检索元素,如果队列为空则返回NULL

+remove(): E // 检索并删除元素,如果队列为空则抛出exception

+peek(): E // 检索但不移除此队列的头部,如果此队列为空,则返回null。

+element(): E // 检索但不移除此队列的头部,如果te队列为空,则抛出exception。

示例实现队列的代码:

 java.util.Queue<String> queue = new LinkedList<>(); queue.offer("Hello"); queue.offer("StackOverFlow"); queue.offer("User"); System.out.println(queue.peek()); while (queue.size() > 0){ System.out.println(queue.remove() + " "); } //Since Queue is empty now so this will return NULL System.out.println(queue.peek()); 

输出代码:

 Hello Hello StackOverFlow User null 

Java中的队列被定义为一个接口,许多随时可用的实现作为JDK版本的一部分存在。 这里有一些: LinkedList ,Priority Queue,ArrayBlockingQueue,ConcurrentLinkedQueue,Linked Transfer Queue, Synchronous Queue等

所以你可以创build这些类中的任何一个,并把它作为队列引用。 例如

 import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main (String[] args) { Queue que = new LinkedList(); que.add("first"); que.offer("second"); que.offer("third"); System.out.println("Queue Print:: " + que); String head = que.element(); System.out.println("Head element:: " + head); String element1 = que.poll(); System.out.println("Removed Element:: " + element1); System.out.println("Queue Print after poll:: " + que); String element2 = que.remove(); System.out.println("Removed Element:: " + element2); System.out.println("Queue Print after remove:: " + que); } } 

您也可以实现自己的自定义队列实现队列接口。

Queue是java中的一个接口,你不能这样做。 尝试:

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