Collections Framework là kiến trúc thống nhất trong Java để lưu trữ và thao tác trên nhóm đối tượng, cung cấp các interface, implementation và utility dùng chung. Nó xuất hiện từ JDK 1.2 và là nền tảng cho hầu hết thao tác dữ liệu trong Java.
Hãy nghĩ như một bộ công cụ quản lý kho: bạn có các loại kho khác nhau (danh sách, tập hợp, hàng đợi) nhưng đều dùng chung một quy tắc nhận/xuất hàng, nên dễ thay đổi loại kho mà không phải viết lại logic.
Cấu trúc interface chính:
Collection<E>
├── List<E> — có thứ tự, cho phép trùng → ArrayList, LinkedList
├── Set<E> — không trùng → HashSet, LinkedHashSet, TreeSet
└── Queue<E> — FIFO/priority → ArrayDeque, PriorityQueue
Map<K,V> — KHÔNG extend Collection → HashMap, LinkedHashMap, TreeMapCơ chế hoạt động dựa trên 3 tầng: Interface định nghĩa contract (ví dụ List có get, add), Implementation cài đặt cụ thể bằng cấu trúc dữ liệu khác nhau (ArrayList dùng mảng động, LinkedList dùng node), và Utility như Collections.sort() cung cấp thuật toán dùng chung. Nhờ vậy, code gọi qua interface có thể đổi implementation mà không sửa logic.
Ví dụ với Java 9+ factory methods:
List<Integer> nums = List.of(1, 2, 3); // immutable
Map<String, Integer> ages = Map.of("Ada", 30); // immutableLỗi thường gặp: dùng List.of() rồi gọi add() sẽ ném UnsupportedOperationException vì danh sách này immutable. Cần mutable thì bọc lại: new ArrayList<>(List.of(...)).
Lưu ý: Map không nằm trong hệ phân cấp Collection dù được coi là một phần của Collections Framework; khi cần thread-safe, dùng ConcurrentHashMap, CopyOnWriteArrayList, BlockingQueue thay vì tự synchronize.