双端队列
Deque
是双端队列,这意味着可以在队列的前端或尾部添加元素。队列只能将元素添加到队列的尾部。
Deque
继承了 Queue
接口,这意味着常规方法仍然存在,但 Deque 接口提供了更多灵活的队列方法。如果你知道队列是如何工作的,那么额外的方法真的可以说是自我,因为这些方法旨在增加更多的灵活性:
方法 | 简要描述;简介 |
---|---|
getFirst() |
获取队列头部的第一项而不删除它。 |
getLast() |
获取队列尾部的第一项而不删除它。 |
addFirst(E e) |
将项添加到队列的头部 |
addLast(E e) |
将项添加到队列的尾部 |
removeFirst() |
删除队列头部的第一个项目 |
removeLast() |
删除队列尾部的第一个项目 |
当然,offer
,poll
和 peek
的选项相同,但它们不能用于例外,而是使用特殊值。展示他们在这里做了什么是没有意义的。
添加和访问元素
要将元素添加到 Deque 的尾部,可以调用它的 add()
方法。你还可以使用 addFirst()
和 addLast()
方法,这些方法将元素添加到双端队列的头部和尾部。
Deque<String> dequeA = new LinkedList<>();
dequeA.add("element 1"); //add element at tail
dequeA.addFirst("element 2"); //add element at head
dequeA.addLast("element 3"); //add element at tail
你可以查看队列头部的元素,而无需将元素从队列中取出。这是通过 element()
方法完成的。你还可以使用 getFirst()
和 getLast()
方法,它们返回 Deque
中的第一个和最后一个元素。这是看起来如何:
String firstElement0 = dequeA.element();
String firstElement1 = dequeA.getFirst();
String lastElement = dequeA.getLast();
删除元素
要从双端队列中删除元素,请调用 remove()
,removeFirst()
和 removeLast()
方法。这里有一些例子:
String firstElement = dequeA.remove();
String firstElement = dequeA.removeFirst();
String lastElement = dequeA.removeLast();