HOWTO · Java

如何在 Java 中從陣列建立陣列列表

本教程演示瞭如何在 Java 中使用各種方法從 Array 建立 ArrayList,並有詳盡的描述和示例。

本頁內容

將參考型別陣列轉換為可調整大小的 ArrayList,可以使用 new ArrayList<>(Arrays.asList(array))、Collections.addAll(list, array),或呼叫 add() 的迴圈。第一種寫法簡潔;第二種會將元素加入已建立的清單;使用迴圈則能在加入每個元素前先進行篩選或轉換。

Java 中的陣列是什麼?

陣列會儲存固定數量、型別相同的值。建立陣列時就會設定長度,而且陣列本身無法增加或縮短。例如,String[] subjects = {"maths", "english"}; 會建立一個有兩個位置的陣列。

Java 中的 ArrayList 是什麼?

ArrayList<E> 是 java.util 中 Java List<E> 介面的可調整大小實作。加入元素時,它可以擴充;移除元素時,也可以縮小。它儲存的是參考型別;若要儲存數值或其他基本型別的值,請使用對應的包裝類別,例如以 Integer 對應 int。

Java 中陣列與 ArrayList 的差異

如果資料適合固定長度,或某個 API 要求陣列,就使用陣列。若需要清單操作,或預期元素數量會改變,則使用 ArrayList。轉換不會讓原陣列變成可調整大小;轉換會建立另一個清單,或將元素加入另一個清單。複製的是物件的參考,因此兩個容器仍可能參照相同物件。

使用 Arrays.asList() 從陣列建立 ArrayList

將陣列傳給 Arrays.asList(),再把回傳結果傳入 ArrayList 建構子。建構子會將元素複製到新的可調整大小清單中。相較之下,單獨使用 Arrays.asList() 會回傳由陣列支援的固定大小清單:替換元素會同時反映在兩者中,但不支援新增或移除清單元素。

執行以下範例:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import java.util.ArrayList;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] subjects = {"maths", "english", "history"};
        ArrayList<String> subjectList = new ArrayList<>(Arrays.asList(subjects));
        subjectList.add("physics");
        System.out.println(subjectList);
    }
}
[maths, english, history, physics]

使用 Collections.addAll() 從陣列建立 ArrayList

先建立目的清單,再將目的清單和來源陣列傳給 Collections.addAll()。如果清單中已有值,或想把陣列元素加入清單,這種方式就很實用。目的清單仍可調整大小。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import java.util.ArrayList;
import java.util.Collections;

public class Main {
    public static void main(String[] args) {
        String[] names = {"john", "emma", "rick"};
        ArrayList<String> nameList = new ArrayList<>();
        Collections.addAll(nameList, names);
        nameList.add("tim");
        System.out.println(nameList);
    }
}
[john, emma, rick, tim]

使用迴圈與 add() 從陣列建立 ArrayList

迴圈可以在加入元素前,逐一檢查或轉換元素。如果需要以自訂方式建立目的清單,這種做法也很適合。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        String[] planets = {"earth", "mars", "venus"};
        ArrayList<String> planetList = new ArrayList<>();
        for (String planet : planets) {
            planetList.add(planet);
        }
        System.out.println(planetList);
    }
}
[earth, mars, venus]

這些範例使用參考型別陣列。像 int[] 這樣的基本型別陣列,不能直接傳給這些泛型轉換方式來產生 List<Integer>:Arrays.asList(intArray) 會將整個 int[] 當成一個元素。若要將每個值裝箱為 Integer,請使用迴圈:

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        int[] scores = {7, 12, 18};
        ArrayList<Integer> scoreList = new ArrayList<>();
        for (int score : scores) {
            scoreList.add(score);
        }
        System.out.println(scoreList);
    }
}
[7, 12, 18]

選擇從陣列建立 ArrayList 的方法

若要簡潔地將陣列複製到新的可調整大小清單,請使用 new ArrayList<>(Arrays.asList(array))。若已有目的清單,請使用 Collections.addAll(existingList, array)。若需要篩選、轉換或在複製時以其他方式處理元素,請使用迴圈。若來源是基本型別陣列,請逐一加入值,讓 Java 將它們裝箱為 ArrayList 所需的包裝型別。