Bootstrap

Java 数据结构 队列之双端队列 常用方法 示例代码 及其实现

目录

常用方法

示例代码

常见实现


Java中的双端队列(Deque,Double Ended Queue)是一种队列,它允许在队列的两端插入和删除元素。与普通队列(FIFO)不同,双端队列的元素可以从队列的两端进行添加或删除。

Java提供了Deque接口,它扩展了Queue接口,常见的实现类有ArrayDequeLinkedList

常用方法

Deque接口支持以下常见操作:

  • 添加元素
    • addFirst(E e):将元素添加到队列的前端。
    • addLast(E e):将元素添加到队列的末端。
  • 删除元素
    • removeFirst():删除队列前端的元素。
    • removeLast():删除队列末端的元素。
    • pollFirst():删除并返回队列前端的元素(如果队列为空返回null)。
    • pollLast():删除并返回队列末端的元素(如果队列为空返回null)。
  • 查看元素
    • getFirst():查看队列前端的元素。
    • getLast():查看队列末端的元素。
    • peekFirst():查看队列前端的元素(如果队列为空返回null)。
    • peekLast():查看队列末端的元素(如果队列为空返回null)。

示例代码

java


复制代码
import java.util.Deque;
import java.util.ArrayDeque;

public class DequeExample {
    public static void main(String[] args) {
        Deque<Integer> deque = new ArrayDeque<>();

        // 添加元素
        deque.addFirst(10); // 队头添加元素
        deque.addLast(20);  // 队尾添加元素
        deque.addLast(30);

        // 查看元素
        System.out.println("队头元素: " + deque.getFirst());  // 输出 10
        System.out.println("队尾元素: " + deque.getLast());   // 输出 30

        // 删除元素
        System.out.println("删除队头元素: " + deque.removeFirst()); // 输出 10
        System.out.println("删除队尾元素: " + deque.removeLast());  // 输出 30

        // 再次查看元素
        System.out.println("队头元素: " + deque.getFirst());  // 输出 20
    }
}

常见实现

  1. ArrayDeque:基于数组实现的双端队列,性能较好,适用于大多数场景,不支持null元素。
  2. LinkedList:基于双向链表实现,提供较高的灵活性,支持更多的操作,但相较于ArrayDeque性能略低。

你可以根据不同的需求选择使用这两个实现。

;