Java Collections Framework
1. Tổng Quan
Collections Framework cung cấp một kiến trúc để lưu trữ và thao tác với nhóm các đối tượng. Nó bao gồm: - Interfaces - Implementations - Algorithms
2. Các Interface Chính
2.1 Collection Interface
Interface gốc của hierarchy collections.
2.2 List Interface
- Một collection có thứ tự
- Cho phép phần tử trùng lặp
- Có thể truy cập theo index
2.3 Set Interface
- Không cho phép phần tử trùng lặp
- Không đảm bảo thứ tự
2.4 Map Interface
- Lưu trữ cặp key-value
- Key không được trùng lặp
- Value có thể trùng lặp
3. Các Implementation Phổ Biến
3.1 ArrayList
List<String> arrayList = new ArrayList<>();
arrayList.add("First");
arrayList.add("Second");
System.out.println(arrayList.get(0)); // Output: First
3.2 LinkedList
LinkedList<String> linkedList = new LinkedList<>();
linkedList.addFirst("First");
linkedList.addLast("Last");
3.3 HashSet
Set<Integer> hashSet = new HashSet<>();
hashSet.add(1);
hashSet.add(2);
hashSet.add(1); // Sẽ không được thêm vào vì đã tồn tại
3.4 HashMap
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("One", 1);
hashMap.put("Two", 2);
System.out.println(hashMap.get("One")); // Output: 1
4. So Sánh Hiệu Năng
ArrayList vs LinkedList
- ArrayList:
- Truy cập ngẫu nhiên nhanh O(1)
- Thêm/xóa ở cuối nhanh
- Thêm/xóa ở giữa chậm
- LinkedList:
- Truy cập ngẫu nhiên chậm O(n)
- Thêm/xóa ở đầu và cuối nhanh
- Thêm/xóa ở giữa nhanh hơn ArrayList
HashSet vs TreeSet
- HashSet:
- Các operation cơ bản O(1)
- Không duy trì thứ tự
- TreeSet:
- Các operation cơ bản O(log n)
- Duy trì thứ tự tự nhiên
5. Best Practices
- Sử dụng interface thay vì implementation
List<String> list = new ArrayList<>(); // Tốt
ArrayList<String> list = new ArrayList<>(); // Không khuyến khích
- Chọn đúng collection type:
- Cần thứ tự và truy cập ngẫu nhiên: ArrayList
- Cần thêm/xóa nhiều ở đầu/cuối: LinkedList
- Cần unique elements: Set
- Cần key-value pairs: Map