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