Java Collections中的Queue类在哪里?

22 java queue data-structures

我只看到一个Queue接口,Java Collections中没有Queue类吗?

Mic*_*ers 35

Javadoc中给出其实现类的列表Queue.

所有已知的实现类:

AbstractQueue,ArrayBlockingQueue,ArrayDeque,的ConcurrentLinkedQueue,DelayQueue,的LinkedBlockingQueue,LinkedBlockingDeque,链表,的PriorityBlockingQueue,PriorityQueue中,的SynchronousQueue

还有一些您可能会觉得有用的子接口:

所有已知子接口:

BlockingDeque <E>,BlockingQueue <E>,Deque <E>

  • 不知道为什么人们不去JavaDocs:P +1 (12认同)
  • 对于真正懒惰的人,我要指出所有DeQue都是双端队列. (6认同)
  • @Pieter:这些类中的任何一个都将执行基本的enqueue/dequeue操作.如果您愿意,可以将队列声明为队列,如`Queue <MyObject> myQueue = new LinkedList <MyObject>()`,这会强制您坚持在接口中声明的队列操作(如添加/删除). (4认同)
  • 我糊涂了。我只想要一个 FIFO 数据结构,让我可以像维基百科上显示的那样将项目入队和出队,而没有任何专门的东西。我选哪个?不是有一个相当于 C++ 的 STL 队列的 Java 吗? (2认同)

aka*_*ppa 10

Queue有多个实现:来自API:

所有已知的实现类:

AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, 
DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, 
PriorityBlockingQueue, PriorityQueue, SynchronousQueue
Run Code Online (Sandbox Code Playgroud)

请注意,AbstractQueue不是具体的类.

其中一些来自包并发,所以如果你正在实现一个jobqueue或类似的东西,你应该为ex获得ConcurrentLinkedQueue或PriorityBlockingQueue(对于一个堆).


Rob*_*Rob 7

Queue列出各种实现的文档,包括

选择一个适合您需求的实现.

  • 它发生了.如果你记住整个Java库,我会留下深刻的印象.如果你记住EE,我会慢慢退回去. (4认同)
  • 好吧,这里有javax.activation,javax.annotation,javax.ejb和...等等,您要去哪里?还有更多!;) (2认同)