ArrayList และ LinkedList ทั้งคู่ implement List interface ทั้งคู่ non-synchronized แต่ต่างกันดังนี้:
| ลำดับ | หัวข้อ | ArrayList | LinkedList |
|---|---|---|---|
| 1 | Internal Implementation | ใช้ Dynamic Array เก็บข้อมูล | ใช้ Doubly Linked List เก็บข้อมูล |
| 2 | Manipulation (เพิ่ม/ลบ) | ช้ากว่า (ต้อง shift array) | เร็วกว่า (node-based ไม่ต้อง shift) |
| 3 | Implementation | implements List เท่านั้น | implements List และ Queue (ใช้เป็น queue ได้) |
| 4 | Access (Random Access) | เร็วกว่า (index-based O(1)) | ช้ากว่า (ต้อง traverse O(n)) |
ตัวอย่าง
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class JavaTester {
public static void main(String args[]) {
List list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
List list1 = new LinkedList<>();
list1.add("A");
list1.add("B");
list1.add("C");
list1.add("D");
System.out.println(list);
System.out.println(list1);
}
}
ผลลัพธ์
[A, B, C, D] [A, B, C, D]