Thứ Hai, 15 tháng 4, 2024

Comparable & Comparator

 

🧩 1. Comparable – So sánh mặc định

Định nghĩa:

Comparable<T>interface bên trong gói java.lang, giúp bạn định nghĩa cách sắp xếp mặc định cho class của mình.

Cách dùng:

  • Lớp bạn muốn sắp xếp cần implements Comparable<T>

  • Phải override phương thức:  public int compareTo(T other)


➡️ Sau đó bạn có thể dùng Collections.sort(studentList) để sắp xếp theo tên (mặc định).

🧲 2. Comparator – So sánh tùy chỉnh

Định nghĩa:

Comparator<T>interface trong java.util, cho phép bạn tạo nhiều cách sắp xếp khác nhau cho cùng một lớp.

Cách dùng:

  • Viết riêng một lớp implements Comparator<T>

  • Override phương thức: public int compare(T o1, T o2)


➡️ Sau đó bạn dùng: Collections.sort(studentList, new SortStudentByGPA());


🔍 So sánh Comparable vs Comparator

Sự khác biệtComparableComparator
Triển khaiBên trong đối tượngBên ngoài đối tượng
Số lần triển khaiMột lần duy nhấtCó thể tạo nhiều Comparator khác nhau
Sử dụngSắp xếp theo một tiêu chí cố địnhSắp xếp theo nhiều tiêu chí khác nhau



Phương thứcpublic int compareTo(Object obj):public int compare(Object obj1, Object obj2):
Được sử dụng để so sánh đối tượngSo sánh đối tượng đầu tiên với đối tượng thứ hai.
Packagejava.langjava.util
Sắp xếpCollections.sort(List)Collections.sort(List, Comparator)
🧪 Ví dụ :





✅ Kết quả :

🔤 Sắp xếp theo tên (A-Z):
An - GPA: 3.9
Bình - GPA: 2.8
Linh - GPA: 3.4

🎓 Sắp xếp theo GPA (giảm dần):
An - GPA: 3.9
Linh - GPA: 3.4
Bình - GPA: 2.8

Không có nhận xét nào:

Đăng nhận xét