Queue
在Java的标准库中,队列接口Queue定义了以下几个方法:
int size()
:获取队列长度;
boolean add(E)/boolean offer(E)
:添加元素到队尾;
E remove()/E poll()
:获取队首元素并从队列中删除;
E element()/E peek()
:获取队首元素但并不从队列中删除。
- 要避免把
null
添加到队列中,否则poll()方法返回null
时,很难确定是取到了null
元素还是队列为空。
PriorityQueue 优先队列
- PriorityQueue和Queue的区别在于,它的出队顺序与元素的优先级有关,对PriorityQueue调用
remove()
或poll()
方法,返回的总是优先级最高的元素。 - 要使用PriorityQueue,我们就必须给每个元素定义“优先级”。PriorityQueue默认按元素比较的顺序排序(必须实现
Comparable
接口),也可以通过Comparator
自定义排序算法(元素就不必实现Comparable
接口)。
Deque
Java集合提供了接口Deque来实现一个双端队列,它的功能是:
- 既可以添加到队尾,也可以添加到队首;
- 既可以从队首获取,又可以从队尾获取。
Deque实现了一个双端队列ÿ