Queue以及Deque都是继承于Collection,Deque是Queue的子接口。
Queue是FIFO的单向队列,Deque是双向队列。
Queue有一个直接子类PriorityQueue,而Deque中直接子类有两个:LinkedList以及ArrayDeque。
PriorityQueue的底层数据结构是数组,而无边界的形容,那么指明了PriorityQueue是自带扩容机制的。
ArrayDeque是无初始容量的双端队列,LinkedList则是双向链表。
PriorityQueue可以作为堆使用,而且可以根据传入的Comparator实现大小的调整,会是一个很好的选择。
ArrayDeque通常作为栈或队列使用,但是栈的效率不如LinkedList高。
LinkedList通常作为栈或队列使用,但是队列的效率不如ArrayQueue高。
1、Deque双向队列
-
LinkedList
Modifier and Type |
Method and Description |
boolean |
add(E e) 将指定的元素列表的结束。 |
void |
add(int index, E element) 在列表中指定的位置上插入指定的元素。 |
boolean |
addAll(Collection<? extends E> c) 追加指定集合的所有元素到这个列表的末尾,按他们的指定集合的迭代器返回。 |
boolean |
addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到该列表中,从指定位置开始。 |
void |
addFirst(E e) 在此列表的开始处插入指定的元素。 |
void |
addLast(E e) 将指定的元素列表的结束。 |
void |
clear() 从这个列表中移除所有的元素。 |
Object |
clone() 返回该 LinkedList 浅拷贝。 |
boolean |
contains(Object o) 返回 true 如果这个列表包含指定元素。 |
Iterator<E> |
descendingIterator() 返回在反向顺序在deque容器元素的迭代器。 |
E |
element() 检索,但不删除,此列表的头(第一个元素)。 |
E |
get(int index) 返回此列表中指定位置的元素。 |
E |
getFirst() 返回此列表中的第一个元素。 |
E |
getLast() 返回此列表中的最后一个元素。 |
int |
indexOf(Object o) 返回此列表中指定元素的第一个出现的索引,或-如果此列表不包含元素,或- 1。 |
int |
lastIndexOf(Object o) 返回此列表中指定元素的最后一个发生的索引,或-如果此列表不包含元素,或- 1。 |
ListIterator<E> |
listIterator(int index) 返回此列表中元素的列表迭代器(在适当的顺序),从列表中的指定位置开始。 |
boolean |
offer(E e) 将指定的元素添加到列表的尾部(最后一个元素)。 |
boolean |
offerFirst(E e) 在列表的前面插入指定的元素。 |
boolean |
offerLast(E e) 在列表的结尾插入指定的元素。 |
E |
peek() 检索,但不删除,此列表的头(第一个元素)。 |
E |
peekFirst() 检索,但不删除该列表的第一个元素,或返回 null 如果这个列表是空的。 |
E |
peekLast() 检索,但不删除该列表的最后一个元素,或返回 null 如果这个列表是空的。 |
E |
poll() 检索并删除此列表的头(第一个元素)。 |
E |
pollFirst() 检索并移除此列表的第一个元素,或返回 null 如果这个列表是空的。 |
E |
pollLast() 检索并移除此列表的最后一个元素,或返回 null 如果这个列表是空的。 |
E |
pop() 从这个列表所表示的堆栈中弹出一个元素。 |
void |
push(E e) 将一个元素推到由该列表所表示的堆栈上。 |
E |
remove() 检索并删除此列表的头(第一个元素)。 |
E |
remove(int index) 移除此列表中指定位置的元素。 |
boolean |
remove(Object o) 从该列表中移除指定元素的第一个发生,如果它是存在的。 |
E |
removeFirst() 移除并返回此列表中的第一个元素。 |
boolean |
removeFirstOccurrence(Object o) 删除此列表中指定元素的第一个出现(当遍历从头到尾的列表)。 |
E |
removeLast() 移除并返回此列表中的最后一个元素。 |
boolean |
removeLastOccurrence(Object o) 删除此列表中指定元素的最后一次(当遍历从头到尾的列表时)。 |
E |
set(int index, E element) 用指定元素替换此列表中指定位置的元素。 |
int |
size() 返回此列表中元素的数目。 |
Object[] |
toArray() 返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一个到最后一个元素)。 |
<T> T[] |
toArray(T[] a) 返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一到最后一个元素);返回数组的运行时类型是指定的数组的运行时类型。 |
- ArrayDeque
boolean |
add(E e) 在这个队列的末尾插入指定元素。 |
void |
addFirst(E e) 在这个队列的前面插入指定元素。 |
void |
addLast(E e) 在这个队列的末尾插入指定元素。 |
void |
clear() 删除所有的从这个容器元素。 |
ArrayDeque<E> |
clone() 返回一个复制该deque容器。 |
boolean |
contains(Object o) 如果这两 true 返回包含指定的元素。 |
Iterator<E> |
descendingIterator() 返回在反向顺序在deque容器元素的迭代器。 |
E |
element() 检索,但不删除,这代表的deque队列的头部。 |
E |
getFirst() 检索,但不删除该deque容器的第一个元素。 |
E |
getLast() 检索,但不删除该队列的最后一个元素。 |
boolean |
isEmpty() 返回 true 如果队列不包含元素。 |
Iterator<E> |
iterator() 返回在deque容器元素的迭代器。 |
boolean |
offer(E e) 在这个队列的末尾插入指定元素。 |
boolean |
offerFirst(E e) 在这个队列的前面插入指定元素。 |
boolean |
offerLast(E e) 在这个队列的末尾插入指定元素。 |
E |
peek() 检索,但不删除,这代表的队列队列的头部,或返回 null 如果队列是空的。 |
E |
peekFirst() 检索,但不删除该deque容器的第一个元素,或返回 null 如果队列是空的。 |
E |
peekLast() 检索,但不删除该队列的最后一个元素,或返回 null 如果队列是空的。 |
E |
poll() 检索并移除该deque表示队列的头部(换句话说,这个容器的第一个元素),或返回 null 如果队列是空的。 |
E |
pollFirst() 检索并移除此队列的第一个元素,或返回 null 如果队列是空的。 |
E |
pollLast() 检索并移除此队列的最后一个元素,或返回 null 如果队列是空的。 |
E |
pop() 从这个弹出堆栈队列代表元素。 |
void |
push(E e) 将一个元素到该deque表示堆栈。 |
E |
remove() 检索并移除该deque队列的头代表。 |
boolean |
remove(Object o) 从这个队列中移除指定元素的一个实例。 |
E |
removeFirst() 检索并移除此队列的第一个元素。 |
boolean |
removeFirstOccurrence(Object o) 删除在这个队列的第一个出现的指定元素(当遍历容器从头部到尾部)。 |
E |
removeLast() 检索并移除此队列的最后一个元素。 |
boolean |
removeLastOccurrence(Object o) 在deque容器移除指定元素的最后出现(当遍历容器从头部到尾部)。 |
int |
size() 返回该容器元素的数量。 |
Object[] |
toArray() 返回一个数组包含所有以正确的顺序在deque容器元素(从第一个到最后一个元素)。 |
<T> T[] |
toArray(T[] a) 返回一个数组包含所有以正确的顺序在deque容器元素(从第一个到最后一个元素);返回数组的运行时类型为指定数组。 |
2、Queue单向队列
- PriorityQueue
boolean |
add(E e) 将指定的元素插入到该优先级队列中。 |
void |
clear() 从这个优先级队列中移除所有的元素。 |
boolean |
contains(Object o) 返回 true 如果此队列包含指定的元素。 |
Iterator<E> |
iterator() 返回此队列中元素的迭代器。 |
boolean |
offer(E e) 将指定的元素插入到该优先级队列中。 |
E |
peek() 检索,但不删除,这个队列头,或返回 null 如果队列为空。 |
E |
poll() 检索并移除此队列的头,或返回 null 如果队列为空。 |
boolean |
remove(Object o) 从该队列中移除指定元素的一个实例,如果它是存在的。 |
int |
size() 返回此集合中的元素的数目。 |
Spliterator<E> |
spliterator() 创建一个后期绑定和快速失败 Spliterator 在队列中的元素。 |
Object[] |
toArray() 返回一个包含此队列中所有元素的数组。 |
<T> T[] |
toArray(T[] a) 返回包含此队列中的所有元素的数组;返回数组的运行时类型是指定的数组的运行时类型。 |