Java ArrayList 與 LinkedList 的靈活選擇

小万哥丶發表於2024-03-08

Java ArrayList

Java ArrayList 類是一個可變大小的陣列,位於 java.util 包中。

建立 ArrayList

import java.util.ArrayList;

ArrayList<String> cars = new ArrayList<String>(); // 建立一個 ArrayList 物件

新增元素

cars.add("Volvo");
cars.add("BMW");
cars.add("Ford");
cars.add("Mazda");

訪問元素

cars.get(0); // 獲取第一個元素

修改元素

cars.set(0, "Opel"); // 修改第一個元素

刪除元素

cars.remove(0); // 刪除第一個元素
cars.clear(); // 刪除所有元素

ArrayList 大小

cars.size(); // 獲取 ArrayList 大小

迴圈遍歷 ArrayList

for 迴圈:

for (int i = 0; i < cars.size(); i++) {
  System.out.println(cars.get(i));
}

for-each 迴圈:

for (String car : cars) {
  System.out.println(car);
}

使用其他型別

ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(10);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(25);

對 ArrayList 進行排序

import java.util.Collections;

Collections.sort(cars); // 對字串的 ArrayList 進行排序
Collections.sort(myNumbers); // 對整數的 ArrayList 進行排序

ArrayList 是 Java 中常用的資料結構,它可以儲存各種型別的資料,並且可以根據需要調整大小。

ArrayList 的優勢:

  • 可變大小
  • 可以儲存各種型別的資料
  • 提供多種方法來訪問、修改和刪除元素
  • 可以使用 Collections 類進行排序

ArrayList 的劣勢:

  • 速度比陣列慢
  • 可能會浪費記憶體空間

建議:

  • 當需要儲存可變大小的資料集合時,使用 ArrayList
  • 當需要快速訪問資料時,使用陣列。
  • 當需要儲存大量資料時,考慮使用其他資料結構,例如 HashMap

Java LinkedList

LinkedList 類與 ArrayList 類相似,但它們之間也有一些重要的區別。

建立 LinkedList

// 匯入 LinkedList 類
import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> cars = new LinkedList<>();
        cars.add("Volvo");
        cars.add("BMW");
        cars.add("Ford");
        cars.add("Mazda");
        System.out.println(cars);
    }
}

ArrayList 與 LinkedList

相同點:

  • 它們都實現了 List 介面,因此它們具有相同的方法。
  • 它們都可用於儲存各種型別的資料。
  • 它們都允許您新增、刪除和修改元素。

不同點:

  • ArrayList 使用陣列儲存資料,而 LinkedList 使用連結串列儲存資料。
  • ArrayList 通常更快,因為它可以直接訪問元素。
  • LinkedList 更靈活,因為它可以更輕鬆地插入和刪除元素。

何時使用:

  • 如果您需要快速訪問列表中的隨機元素,請使用 ArrayList
  • 如果您需要經常插入和刪除元素,請使用 LinkedList

LinkedList 方法

LinkedList 提供了一些 ArrayList 沒有的方法,這些方法可以更有效地執行某些操作:

方法 描述
addFirst() 將元素新增到列表的開頭。
addLast() 在列表的末尾新增元素。
removeFirst() 從列表的開頭刪除元素。
removeLast() 從列表的末尾刪除元素。
getFirst() 獲取列表開頭的元素。
getLast() 獲取列表末尾的元素。

示例

// 新增元素到列表的開頭
cars.addFirst("Toyota");

// 新增元素到列表的末尾
cars.addLast("Mercedes");

// 刪除列表開頭的元素
cars.removeFirst();

// 刪除列表末尾的元素
cars.removeLast();

// 獲取列表開頭的元素
String firstCar = cars.getFirst();

// 獲取列表末尾的元素
String lastCar = cars.getLast();

LinkedList 是一種靈活的資料結構,可以有效地執行某些操作。如果您需要經常插入和刪除元素,LinkedList 是一個不錯的選擇。

最後

為了方便其他裝置和平臺的小夥伴觀看往期文章:

微信公眾號搜尋:Let us Coding,關注後即可獲取最新文章推送

看完如果覺得有幫助,歡迎 點贊、收藏、關注

相關文章