Java ArrayDeque 类:初学者指南

引言

你好,未来的 Java 大师们!今天,我们将开始一段激动人心的旅程,深入了解 Java 的 ArrayDeque 类。我知道你们可能在想:“Deque?这是个花哨的法国词吗?”嗯,其实不是!在编程领域,deque(发音为“deck”)代表双端队列。它就像游乐园里的队伍,人们可以从两端加入或离开。很酷,对吧?

Java -  ArrayDeque

ArrayDeque 是 Java 对 Deque 接口的实现,它是您编程工具箱中的强大工具。它就像数据存储和操作的多功能瑞士军刀。所以,系好安全带,让我们开始吧!

ArrayDeque 类声明

在我们开始使用 ArrayDeque 之前,我们需要知道如何声明它。其实很简单。以下是声明方法:

import java.util.ArrayDeque;

ArrayDeque<Integer> numbers = new ArrayDeque<Integer>();

在这个例子中,我们创建了一个将存储 Integer 对象的 ArrayDeque。但请放心,ArrayDeque 很灵活 - 您可以使用它任何对象类型!

ArrayDeque 类构造函数

ArrayDeque 提供了三个构造函数。可以将构造函数视为构建双端队列的不同方式:

  1. ArrayDeque(): 创建一个初始容量为 16 个元素的双端队列。
  2. ArrayDeque(int numElements): 创建具有指定初始容量的双端队列。
  3. ArrayDeque(Collection<? extends E> c): 创建一个包含指定集合元素的双端队列。

让我们看看它们的实际应用:

// 默认构造函数
ArrayDeque<String> fruits1 = new ArrayDeque<>();

// 具有初始容量的构造函数
ArrayDeque<String> fruits2 = new ArrayDeque<>(20);

// 具有集合的构造函数
ArrayList<String> fruitList = new ArrayList<>();
fruitList.add("Apple");
fruitList.add("Banana");
ArrayDeque<String> fruits3 = new ArrayDeque<>(fruitList);

ArrayDeque 类方法

现在,让我们看看 ArrayDeque 中一些最常用的方法。我喜欢将这些方法视为瑞士军刀可以执行的多种技巧。

方法 描述
addFirst(E e) 将元素添加到双端队列的前端
addLast(E e) 将元素添加到双端队列的末端
offerFirst(E e) 将元素添加到双端队列的前端(返回布尔值)
offerLast(E e) 将元素添加到双端队列的末端(返回布尔值)
removeFirst() 移除并返回第一个元素
removeLast() 移除并返回最后一个元素
pollFirst() 移除并返回第一个元素(如果为空,则返回 null)
pollLast() 移除并返回最后一个元素(如果为空,则返回 null)
getFirst() 返回第一个元素,但不移除它
getLast() 返回最后一个元素,但不移除它
peekFirst() 返回第一个元素,但不移除它(如果为空,则返回 null)
peekLast() 返回最后一个元素,但不移除它(如果为空,则返回 null)

向 ArrayDeque 添加和移除元素的示例

让我们用一个实际的例子来运用我们新学到的知识。想象一下我们正在管理一个待办事项列表,任务可以从任一端添加或移除。

import java.util.ArrayDeque;

public class ToDoList {
public static void main(String[] args) {
ArrayDeque<String> tasks = new ArrayDeque<>();

// 添加任务
tasks.addFirst("起床");
tasks.addLast("刷牙");
tasks.offerFirst("设置闹钟");
tasks.offerLast("上床睡觉");

System.out.println("当前任务: " + tasks);

// 移除任务
String firstTask = tasks.removeFirst();
String lastTask = tasks.removeLast();

System.out.println("完成第一个任务: " + firstTask);
System.out.println("完成最后一个任务: " + lastTask);
System.out.println("剩余任务: " + tasks);

// 查看任务
String nextTask = tasks.peekFirst();
String finalTask = tasks.peekLast();

System.out.println("下一个任务: " + nextTask);
System.out.println("最终任务: " + finalTask);
}
}

让我们分解一下:

  1. 我们首先创建了一个名为 tasks 的 ArrayDeque。
  2. 我们使用 addFirst()addLast()offerFirst()offerLast() 添加任务。注意我们是如何在双端队列的两端添加任务的。
  3. 然后我们使用 removeFirst()removeLast() 从两端移除任务。
  4. 最后,我们使用 peekFirst()peekLast() 查看第一个和最后一个任务,但不移除它们。

输出

运行此代码时,您将看到类似以下内容:

当前任务: [设置闹钟, 起床, 刷牙, 上床睡觉]
完成第一个任务: 设置闹钟
完成最后一个任务: 上床睡觉
剩余任务: [起床, 刷牙]
下一个任务: 起床
最终任务: 刷牙

就是这样!您刚刚创建、操作并探索了一个 ArrayDeque。相当整洁,不是吗?

请记住,熟能生巧。尝试创建自己的 ArrayDeque 并实验不同的方法。您可以创建播放列表管理器、浏览器历史记录跟踪器,甚至是一个简单的撤销/重做系统!

ArrayDeque 就像一个好朋友 - 需要时总是在那里,随时从两边提供帮助。所以,不要害羞,更好地了解它,很快您就会像专业人士一样使用双端队列!

编程愉快,未来的 Java 大师们!??

Credits: Image by storyset