Java队列Queue简述
概述
Queue是java中实现队列的接口,它总共只有6个方法,我们一般只用其中3个就可以了。Queue的实现类有LinkedList和PriorityQueue。最常用的实现类是LinkedList。
Queue的6个方法分类
抛出异常 | 返回特殊值 | |
---|---|---|
插入 | add(e) | offer(e) |
删除 | remove() | poll() |
检查 | element() | peek() |
-
添加元素(压入):add()、offer()
相同:未超出容量,从队尾添加元素,返回添加的那个元素。
区别:超出容量时,add()方法会抛出异常,offer()方法则返回false。
-
删除元素(弹出):remove()、poll()
相同:容量大于0的时候,删除队头元素并返回该被删除的元素。
区别:在容量为0的时候,remove()会抛出异常,poll()返回false。
-
获取队头元素(不删除):element()、peek()
相同:容量大于0的时候,都返回队头元素,但不删除。
区别:容量为0的时候,element()会抛出异常,peek()返回null。
Queue是一个先进先出的队列
队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头 都是调用 remove() 或 poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。
例子:
public class QueueTest { public static void main(String[] args) { Queue<String> queue = new LinkedList(); queue.offer("元素A"); queue.offer("元素B"); queue.offer("元素C"); queue.offer("元素D"); queue.offer("元素E"); while (queue.size() > 0) { String element = queue.poll(); System.out.println(element); } } }
输出:
元素A 元素B 元素C 元素D 元素E Process finished with exit code 0