Có 3 cách phổ biến để chuyển mảng (T[]) thành ArrayList<T>:
Cách 1: Duyệt mảng, add từng phần tử
String[] stringArray = {"JavaFX", "Java", "WebGL"};
ArrayList<String> arrayList = new ArrayList<>();
for (int i = 0; i < stringArray.length; i++) {
arrayList.add(stringArray[i]);
}
Cách 2: Dùng Arrays.asList() (Khuyên dùng - ngắn gọn)
import java.util.Arrays;
import java.util.ArrayList;
String[] stringArray = {"JavaFX", "Java", "WebGL"};
List<String> list = Arrays.asList(stringArray); // Trả về List fixed-size
ArrayList<String> arrayList = new ArrayList<>(list); // Copy sang ArrayList mutable
Lưu ý: Arrays.asList() trả về List fixed-size (không add/remove được), backed by array gốc. Cần wrap trong new ArrayList<>() để có ArrayList đầy đủ tính năng.
Cách 3: Dùng Collections.addAll()
import java.util.Collections;
import java.util.ArrayList;
String[] stringArray = {"JavaFX", "Java", "WebGL"};
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList, stringArray); // Hiệu quả, null-safe
So sánh
| Cách | Độ phức tạp | Mutable? | Null-safe? | Ghi chú |
|---|---|---|---|---|
| For loop add | O(n) | Có | Tự xử lý | Kiểm soát hoàn toàn |
| Arrays.asList() + new ArrayList() | O(n) | Có | Có | Ngắn gọn, phổ biến nhất |
| Collections.addAll() | O(n) | Có | Có | Hiệu suất tốt, null-safe |
Java 9+: List.of() (Immutable)
// Immutable list - không add/remove được List<String> immutableList = List.of(stringArray); // Mutable copy ArrayList<String> mutableList = new ArrayList<>(List.of(stringArray));
Khuyên dùng: new ArrayList<>(Arrays.asList(array)) (Java 8) hoặc new ArrayList<>(List.of(array)) (Java 9+).