มีหลัก 3 วิธี** หลัก ในการแปลง Array -> ArrayList
วิธีที่ 1: วนลูป Add ทีละ Element (เข้าใจง่าย)
String[] array = {"Java", "Python", "Go"};
ArrayList<String> list = new ArrayList<>();
for (String s : array) {
list.add(s);
}
วิธีที่ 2: ใช้ Arrays.asList() + ArrayList Constructor (มาตรฐาน)
String[] array = {"Java", "Python", "Go"};
List<String> tempList = Arrays.asList(array); // Fixed-size List
ArrayList<String> list = new ArrayList<>(tempList); // Copy เป็น ArrayList จริง
// หรือ One-liner
ArrayList<String> list = new ArrayList<>(Arrays.asList(array));
วิธีที่ 3: ใช้ Collections.addAll() (แนะนำสำหรับ Performance)
String[] array = {"Java", "Python", "Go"};
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, array); // เพิ่มทั้ง Array เข้าไปทีเดียว
ผลลัพธ์ทุกวิธี
[Java, Python, Go]
ข้อควรระวังสำคัญ
| วิธี | คืนค่า | ข้อควรระวัง |
|---|---|---|
Arrays.asList() ตรงๆ |
Fixed-size List | ไม่ใช่ ArrayList add/remove จะ Exception ต้อง Wrap ด้วย new ArrayList() |
| Primitive Array (int[]) | List<int[]> | ไม่ทำ Autoboxing ต้องใช้ Loop หรือ Stream: Arrays.stream(arr).boxed().collect(...) |
Java 8+ Stream Way (สำหรับ Primitive Array)
int[] primitiveArray = {1, 2, 3};
List<Integer> list = Arrays.stream(primitiveArray)
.boxed()
.collect(Collectors.toList());
Java 9+ Factory Methods (Immutable)
// สร้าง Immutable List จาก Array โดยตรง List<String> immutable = List.of(array); // Java 11+ // หรือ List<String> immutable = List.copyOf(Arrays.asList(array));
สรุปแนะนำ
- General:
new ArrayList<>(Arrays.asList(array)) - Performance Critical:
Collections.addAll(list, array) - Primitive Array: Stream API
.boxed().collect(...) - Immutable Result:
List.of()หรือList.copyOf()