Queue 是一个接口,与Set, List同一级别,继承自Collection
Java中创建一个队列不能直接用Queue,而要用队列的具体实现
队列的实现有:
- 实现LinkedList接口的,非阻塞的:
- PriorityQueue,优先队列
- ConcurrentLinkedQueue,线程安全的
- 实现BlockingQueue接口的,阻塞的:
- ArrayBlockingQueue: 由数组支持的有界队列
- LinkedBlockingQueue:由链表支持的可选有界队列
- PriorityBlockingQueue:优先级堆支持的无界队列
- DelayQueue:优先级堆支持的,基于时间的调度队列
队列的方法:
作用 | 抛异常 | 不抛异常(返回null) |
---|---|---|
插入 | add() | offer() |
删除 | remove() | poll() |
获取头元素 | element() | peek() |
还有两个阻塞的方法,put()添加元素,take()删除并返回队顶元素。
此外还有size()计算大小,isEmpty()判空等方法。
用法
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
BlockingQueue<String> queue = new LinkedBlockingQueue<String>(Length);
Queue<String> que = new LinkedList<String> ();
PriorityQueue<Integer> que = new PriorityQueue<> ()
PriorityBlockingQueue<Integer> que = new PriorityBlockingQueue<> ()