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 所需的包裝型別。