源码均以JDK8作为参考
队列是一种先进先出(FIFO)的数据结构。
ArrayDeque
1.简介:
ArrayDeque
ArrayDeque
因此ArrayDeque同时拥有这两者的特性,本身队列是基于先进先出(FIFO)的,但是由于JDK1.6中Deque
性可以在队列的头部和尾部进行操作。
2.实现:
ArrayDeque
ArrayDeque
public ArrayDeque()
:无参构造函数,默认初始一个长度为16的数组。
public ArrayDeque(int numElements)
:有参构造函数,当指定的numElements小于8时,初始化一个长度为8的数组。若指定的numElements大于8时,则根据运算规则:向大于numElements的最近的2
的n次方作为初始长度。例如:当numElements为9时,默认长度为16,当numElements为45时,默认长度为64.
public ArrayDeque(Collection extends E> c)
:根据集合c的size按照上一个重载的构造函数进行初始化操作,并将集合c中的元素加入到队列中。
注:ArrayDeque
3.ArrayDeque
Deque
在使用上,既可以按照单向队列来使用(经典的FIFO),也可以按照双端队列来使用(可以选择从头部和尾部操作队列)
4.对于队列的其他功能可以参见上一篇的Queue
5.ArrayDeque
Queue
Queue queue = new ArrayDeque();
queue.add("1");
queue.add("2");
queue.add("3");
queue.poll();
queue.poll();
queue.poll();
注:Queue
Deque
Deque deque = new ArrayDeque();
deque.add("1");
deque.add("2");
deque.add("3");
System.out.println(deque.pollFirst());
System.out.println(deque.pollLast());
System.out.println(deque.poll());
注:Deque
PriorityQueue
1.简介:
JDK1.5集合重做过程中,引入了PriorityQueue
比如ArrayDeque
如果不提供Comparator
如果提供了Comparator
2.实现:
PriorityQueue
PriorityQueue
public PriorityQueue()
public PriorityQueue(int initialCapacity)
public PriorityQueue(Comparator super E> comparator)
public PriorityQueue(int initialCapacity, Comparator super E> comparator)
public PriorityQueue(Collection extends E> c)
public PriorityQueue(PriorityQueue extends E> c)
public PriorityQueue(SortedSet extends E> c)
注:无参构造函数初始化时,队列默认长度为11,当使用其他构造函数时,默认长度是显示指定的长度或者传入集合的长度。
3.方法:
PriorityQueue
Queue priorityQueue = new PriorityQueue();
priorityQueue.add(1);
priorityQueue.add(4);
priorityQueue.add(2);
priorityQueue.add(3);
System.out.println(priorityQueue.poll());
System.out.println(priorityQueue.poll());