Queue是一个接口,这意味着你不能直接构造一个Queue 。
最好的select是构造一个已经实现Queue接口的类,如下所示: AbstractQueue , ArrayBlockingQueue , ConcurrentLinkedQueue , DelayQueue , DelayQueue , LinkedList , PriorityBlockingQueue , PriorityQueue或SynchronousQueue 。
另一种方法是编写自己的类来实现必要的队列接口。 这是不必要的,除非在极less数情况下,你希望做一些特别的事情,同时为Queue的其余部分提供一个Queue 。
public class MyQueue implements Queue { 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() { public Tree element() { ... }; public boolean offer(Tree element) { ... }; ... };
Queue是一个接口。 除非通过匿名内部类,否则不能直接实例化接口。 通常情况下,这不是你想要做的收集。 相反,select一个现有的实现。 例如:
Queue q = new LinkedList();
要么
Queue q = new ArrayDeque();
通常情况下,您会根据您感兴趣的性能和并发性特征select一个集合实现。
Queue qe=new LinkedList(); qe.add("b"); qe.add("a"); qe.add("c");
Queue是一个界面,你不能像你所做的那样创build它的实例
队列是一个接口,你不能明确地构造一个队列,你将不得不实例化它的一个实现类。 就像是:
Queue linkedList = new LinkedList();
这里是关于这个主题的Java教程的链接。
队列是java中的一个接口,你不能这样做。
相反,你有两个select:
选项1:
Queue Q = new LinkedList<>();
选项2:
Queue 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 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 Q = new LinkedList();