Java ArrayDeque 类:初学者指南
引言
你好,未来的 Java 大师们!今天,我们将开始一段激动人心的旅程,深入了解 Java 的 ArrayDeque 类。我知道你们可能在想:“Deque?这是个花哨的法国词吗?”嗯,其实不是!在编程领域,deque(发音为“deck”)代表双端队列。它就像游乐园里的队伍,人们可以从两端加入或离开。很酷,对吧?
ArrayDeque 是 Java 对 Deque 接口的实现,它是您编程工具箱中的强大工具。它就像数据存储和操作的多功能瑞士军刀。所以,系好安全带,让我们开始吧!
ArrayDeque 类声明
在我们开始使用 ArrayDeque 之前,我们需要知道如何声明它。其实很简单。以下是声明方法:
import java.util.ArrayDeque;
ArrayDeque<Integer> numbers = new ArrayDeque<Integer>();
在这个例子中,我们创建了一个将存储 Integer 对象的 ArrayDeque。但请放心,ArrayDeque 很灵活 - 您可以使用它任何对象类型!
ArrayDeque 类构造函数
ArrayDeque 提供了三个构造函数。可以将构造函数视为构建双端队列的不同方式:
-
ArrayDeque()
: 创建一个初始容量为 16 个元素的双端队列。 -
ArrayDeque(int numElements)
: 创建具有指定初始容量的双端队列。 -
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);
}
}
让我们分解一下:
- 我们首先创建了一个名为
tasks
的 ArrayDeque。 - 我们使用
addFirst()
、addLast()
、offerFirst()
和offerLast()
添加任务。注意我们是如何在双端队列的两端添加任务的。 - 然后我们使用
removeFirst()
和removeLast()
从两端移除任务。 - 最后,我们使用
peekFirst()
和peekLast()
查看第一个和最后一个任务,但不移除它们。
输出
运行此代码时,您将看到类似以下内容:
当前任务: [设置闹钟, 起床, 刷牙, 上床睡觉]
完成第一个任务: 设置闹钟
完成最后一个任务: 上床睡觉
剩余任务: [起床, 刷牙]
下一个任务: 起床
最终任务: 刷牙
就是这样!您刚刚创建、操作并探索了一个 ArrayDeque。相当整洁,不是吗?
请记住,熟能生巧。尝试创建自己的 ArrayDeque 并实验不同的方法。您可以创建播放列表管理器、浏览器历史记录跟踪器,甚至是一个简单的撤销/重做系统!
ArrayDeque 就像一个好朋友 - 需要时总是在那里,随时从两边提供帮助。所以,不要害羞,更好地了解它,很快您就会像专业人士一样使用双端队列!
编程愉快,未来的 Java 大师们!??
Credits: Image by storyset