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