Java 双端队列用法

Java 双端队列用法

在 Java 中,双端队列(Deque)是通过 java.util.Deque 接口来实现的。Java 提供了几个实现了 Deque 接口的类,常用的有 LinkedListArrayDeque

下面是一些常见的双端队列的用法:

  1. 创建双端队列:

    Deque<String> deque = new LinkedList<>(); // 使用 LinkedList 实现双端队列
    

    或者

    Deque<Integer> deque = new ArrayDeque<>(); // 使用 ArrayDeque 实现双端队列
    
  2. 在队列的头部或尾部插入元素:

    • 使用 addFirst() 方法在队列头部插入元素。
    • 使用 addLast() 方法在队列尾部插入元素。
    • 使用 offerFirst() 方法在队列头部插入元素,并返回 truefalse 表示是否成功。
    • 使用 offerLast() 方法在队列尾部插入元素,并返回 truefalse 表示是否成功。
    deque.addFirst("Java"); // 在队列头部插入元素
    deque.addLast("Python"); // 在队列尾部插入元素
    deque.offerFirst("C++"); // 在队列头部插入元素
    deque.offerLast("JavaScript"); // 在队列尾部插入元素
    
  3. 从队列的头部或尾部删除元素:

    • 使用 removeFirst() 方法删除并返回队列头部的元素。
    • 使用 removeLast() 方法删除并返回队列尾部的元素。
    • 使用 pollFirst() 方法删除并返回队列头部的元素,如果队列为空则返回 null
    • 使用 pollLast() 方法删除并返回队列尾部的元素,如果队列为空则返回 null
    String firstElement = deque.removeFirst(); // 删除并返回队列头部的元素
    String lastElement = deque.removeLast(); // 删除并返回队列尾部的元素
    
  4. 获取队列的头部或尾部元素:

    • 使用 getFirst() 方法获取但不删除队列头部的元素。
    • 使用 getLast() 方法获取但不删除队列尾部的元素。
    • 使用 peekFirst() 方法获取但不删除队列头部的元素,如果队列为空则返回 null
    • 使用 peekLast() 方法获取但不删除队列尾部的元素,如果队列为空则返回 null
    String firstElement = deque.getFirst(); // 获取但不删除队列头部的元素
    String lastElement = deque.getLast(); // 获取但不删除队列尾部的元素
    

双端队列可以灵活地在队列的两端进行插入、删除和获取操作,适用于各种场景,如实现栈、队列、循环队列等。根据具体需求,选择合适的实现类(如 LinkedListArrayDeque)来创建双端队列对象即可。

import java.util.Deque;
import java.util.LinkedList;

public class DequeExample {
    public static void main(String[] args) {
        // 创建一个双端队列对象
        Deque<String> deque = new LinkedList<>();

        // 在队列的尾部插入元素
        deque.offerLast("Java");
        deque.offerLast("Python");
        deque.offerLast("C++");

        // 在队列的头部插入元素
        deque.offerFirst("JavaScript");

        // 输出队列中的所有元素
        System.out.println("Deque elements: " + deque);

        // 从队列的头部和尾部分别删除元素
        String firstElement = deque.pollFirst();
        String lastElement = deque.pollLast();

        // 输出删除的元素
        System.out.println("Removed first element: " + firstElement);
        System.out.println("Removed last element: " + lastElement);

        // 获取但不删除队列的头部和尾部元素
        String firstElementPeek = deque.peekFirst();
        String lastElementPeek = deque.peekLast();

        // 输出获取的元素
        System.out.println("First element peek: " + firstElementPeek);
        System.out.println("Last element peek: " + lastElementPeek);
    }
}

你可能感兴趣的:(javaSE,java,开发语言)