image
简介
Queue是一种先进先出(first-in-first-out) 的数据结构,除了基本的操作外,队列还提供了额外的插入、提取和检查操作。这些方法都提供了两份的形式,一种是抛出一个异常,一种是返回一个特殊值来判断该操作是否成功。其中,后一种操作是为了限制队列容量的判断而实现的。
java.util.Queue在java中是一个接口,该接口扩展了java.util.Collection接口。同时,LinkedList实现了Deque接口,Deque接口继承了Queue接口,所以LinkedList也可以当做Queue来操作
要点
Queue使用时,要尽量避免Collection的add()和remove()方法,而是
- 使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否;
- 要使用前端节点而不移出该元素,使用element()或者peek()方法。
Queue是非线程安全的。
主要方法
1、booleab add(E e):插入指定的元素要队列中,并返回true或者false,如果队列数量超过了容量,则抛出IllegalStateException的异常。
2、boolean offer(E e):插入指定的元素到队列,并返回true或者false,如果队列数量超过了容量,不会抛出异常,只会返回false。
3、E remove():搜索并删除最顶层的队列元素,如果队列为空,则抛出一个Exception
4、E poll():搜索并删除最顶层的队列元素,如果队列为空,则返回null
5、E element():检索但不删除并返回队列中最顶层的元素,如果该队列为空,则抛出一个Exception
6、E peek(): 检索但不删除并返回最顶层的元素,如果该队列为空,则返回null
时间复杂度
索引:O(n)
搜索:O(n)
插入:O(1)
移除:O(1)