如何在java中实例化一个Queue对象?
当我尝试:
Queue<Integer> q = new Queue<Integer>();
编译器给我一个错误。 任何帮助?
另外,如果我想初始化一个队列,我必须实现队列的方法吗?
Queue
是一个接口,这意味着你不能直接构造一个Queue
。
最好的select是构造一个已经实现Queue
接口的类,如下所示: AbstractQueue
, ArrayBlockingQueue
, ConcurrentLinkedQueue
, DelayQueue
, DelayQueue
, LinkedList
, PriorityBlockingQueue
, PriorityQueue
或SynchronousQueue
。
另一种方法是编写自己的类来实现必要的队列接口。 这是不必要的,除非在极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>();