Java Deque容器

Deque是Java集合框架中的一种双端队列容器。Deque是"Double Ended Queue"的缩写,表示它可以在两端插入和删除元素。

Deque的特点

Deque容器具有以下特点:

  1. 元素可以在队列的前端和后端添加和删除。
  2. 可以包含重复的元素。
  3. 可以按照插入顺序进行迭代。
  4. 提供了在队列中查找、删除和替换操作的方法。
  5. 不允许插入Null元素。

Deque的实现类

Java提供了两个主要的Deque实现类:

  1. ArrayDeque: 使用数组实现的双端队列,可以动态扩展。
  2. LinkedList: 使用链表实现的双端队列,没有固定大小限制。

使用Deque

创建Deque对象

可以使用如下代码创建一个Deque对象:

Deque<String> deque = new ArrayDeque<>();

元素的插入和删除

Deque对象提供了以下方法用于在队列的前端和后端插入和删除元素:

  • void addFirst(E e):在队列的前端添加元素。
  • void addLast(E e):在队列的后端添加元素。
  • boolean offerFirst(E e):在队列的前端添加元素,并返回添加是否成功。
  • boolean offerLast(E e):在队列的后端添加元素,并返回添加是否成功。
  • E removeFirst():删除并返回队列的第一个元素。
  • E removeLast():删除并返回队列的最后一个元素。
  • E pollFirst():删除并返回队列的第一个元素,如果队列为空则返回null。
  • E pollLast():删除并返回队列的最后一个元素,如果队列为空则返回null。

下面是一个示例:

Deque<String> deque = new ArrayDeque<>();

// 在队列的前端插入元素
deque.addFirst("A");
deque.addFirst("B");
deque.addFirst("C");

// 在队列的后端插入元素
deque.addLast("X");
deque.addLast("Y");
deque.addLast("Z");

// 删除并返回队列的第一个元素
String firstElement = deque.removeFirst();
System.out.println("First element: " + firstElement);

// 删除并返回队列的最后一个元素
String lastElement = deque.removeLast();
System.out.println("Last element: " + lastElement);

输出结果:

First element: C
Last element: Z

其他操作

除了插入和删除元素以外,Deque还提供了以下常用操作:

  • E getFirst():返回队列的第一个元素,但不删除它。
  • E getLast():返回队列的最后一个元素,但不删除它。
  • E peekFirst():返回队列的第一个元素,如果队列为空则返回null。
  • E peekLast():返回队列的最后一个元素,如果队列为空则返回null。
  • boolean removeFirstOccurrence(Object o):删除第一个等于给定元素的元素。
  • boolean removeLastOccurrence(Object o):删除最后一个等于给定元素的元素。

下面是一个示例:

Deque<String> deque = new ArrayDeque<>();

deque.add("A");
deque.add("B");
deque.add("C");
deque.add("B");

// 返回队列的第一个元素
String firstElement = deque.getFirst();
System.out.println("First element: " + firstElement);

// 返回队列的最后一个元素
String lastElement = deque.getLast();
System.out.println("Last element: " + lastElement);

// 删除第一个等于给定元素的元素
boolean removed = deque.removeFirstOccurrence("B");
System.out.println("Removed: " + removed);

// 删除最后一个等于给定元素的元素
removed = deque.removeLastOccurrence("B");
System.out.println("Removed: " + removed);

输出结果:

First element: A
Last element: B
Removed: true
Removed: true

总结

Deque是Java集合框架中的一种双端队列容器,可以在队列的前端和后端插入和删除元素。它有两个主要的实现类:ArrayDequeLinkedList。Deque提供了丰富的方法用于插入、删除和查找元素。在实际开发中,