Comparable: định nghĩa thứ tự tự nhiên trong chính class đó (implement Comparable<T>, override compareTo()).
- Mỗi class chỉ có một thứ tự so sánh.
Comparator: logic so sánh bên ngoài, implementComparator<T>, overridecompare(). - Có thể tạo nhiều chiến lược sắp xếp khác nhau.
- Dùng
Comparablekhi đối tượng có thứ tự rõ ràng (User theo ID);Comparatorkhi cần sắp xếp theo nhiều tiêu chí khác nhau (tên, tuổi, lương).