Queue(Deque)是队列模式的数据类型,是符合先进先出的(frist in frist out),队列通常情况下不能随机访问。
实现Deque接口的方式有三种:
PriorityQueue:元素存储的顺序不是按照添加的存储,而是按照元素大小的顺序存储,不允许有null元素插入,
PriorityQueue有两种排序方式:
1,自然排序:采用自然排序的PriorityQueue集合中的元素必须实现Comparator接口,而且应该是一个类的多个实例,否则可能导致ClassCastException异常。
2,定制排序:创建PriorityQueue队列时,传入一个Comparable对象,该对象负责对所有队列中的所有元素进行排序。采用定制排序不要求必须实现Comparator接口。
PriorityQueue pq = new PriorityQueue();
pq.offer(6);
pq.add(-3);
pq.add(20);
pq.offer(18);
//输出:[-3, 6, 20, 18]
System.out.println(pq);
ArrayDeque:
Deque接口是Queue接口的子接口,它代表一个双端队列,Deque定义了一些方法:
void addFirst(Object e): 将指定元素添加到双端队列的头部。
void addLast(Object e): 将指定元素添加到双端队列的尾部。
Iteratord descendingItrator(): 返回该双端队列对应的迭代器,该迭代器以逆向顺序来迭代队列中的元素。
Object getFirst(): 获取但不删除双端队列的第一个元素。
Object getLast(): 获取但不删除双端队列的最后一个元素。
boolean offFirst(Object e): 将指定元素添加到双端队列的头部。
boolean offLast(OBject e): 将指定元素添加到双端队列的尾部。
Object peekFirst(): 获取但不删除双端队列的第一个元素;如果双端队列为空,则返回null。
Object PeekLast(): 获取但不删除双端队列的最后一个元素;如果双端队列为空,则返回null。
Object pollFirst(): 获取并删除双端队列的第一个元素;如果双端队列为空,则返回null。
Object pollLast(): 获取并删除双端队列的最后一个元素;如果双端队列为空,则返回null。
Object pop()(栈方法): pop出该双端队列所表示的栈的栈顶元素。相当于removeFirst()。
void push(Object e)(栈方法): 将一个元素push进该双端队列所表示的栈的栈顶。相当于addFirst()。
Object removeFirst(): 获取并删除该双端队列的第一个元素。
Object removeFirstOccurence(Object o): 删除该双端队列的第一次出现的元素o。
Object removeLast(): 获取并删除该双端队列的最后一个元素o。
Object removeLastOccurence(Object o): 删除该双端队列的最后一次出现的元素o。
打印结果是:
dueue.pop();删除的是先进的元素,比如上面的删除之后就把1线删除了。