Comparator & Comparable trong Java

Comparator & Comparable trong Java

Tags
Java
Published
January 17, 2024
Author

Comparator và Comparable là gì?

là các interface
để sắp xếp các phần tử của Collection.
 

Sử dụng Comparable như thế nào?

 
  1. implements interface Comparable cho lớp đối tượng cần so sánh.
 
VD:
public class Student implements Comparable <Student>
 
  1. Dùng phương thức compareTo (Object obj)
 
VD:
@Override
public int compareTo (Student student) {
return this.getAge() - student.getAge();
}
 
Phương thức compareTo có kiểu trả về là int:
  • Trả về < 0 ⇒ phần tử hiện tại < phần tử khác.
  • Trả về = 0 ⇒ phần tử hiện tại = phần tử khác.
  • Trả về > 0 ⇒ phần tử hiện tại > phần tử khác.
 
  1. Trong hàm main:
 
List<Student> studentList = new ArrayList<>();
 
Collections. sort(studentList);
 

Sử dụng Comparator như thế nào?

 
  1. Để sử dụng Comparator, ta không cần phải implements Comparator cho lớp đối tượng cần so sánh.
  1. Trong hàm main:
    1.  
      Collections.sort(List, new Comparator<>);
       
      VD:
       
      Collections. sort(studentList, new Compartor<Student>(){
      @Override
      } );
  1. Dùng phương thức compare(Object obj1, Object obj2)
VD:
Collections. sort(studentList, new Compartor<Student>(){
@Override
public int compare(Student o1, Student o2){
return o1.getId - o2.getID;
}
} );
 

Bài tập ứng dụng

Tạo ra lớp Employee trong file Employee.java với các thông tin được mô tả như sau:
notion image
1.    Giải thích:
  • id, firstName, lastName, salary là các thuộc tính chỉ mã, tên, họ, tiền lương của đối tượng nhân viên.
  • Employee(id: int, firstName: String, lastName: String, salary: int) là phương thức khởi tạo có tham số dùng để khởi tạo giá trị cho các thuộc tính.
  • getFullName() là phương thức trả về firstName + lastName.
  • Các phương thức còn lại là các setter và getter.
2.    Yêu cầu:
a.     Viết hàm main để test class Employee đã tạo ra bằng cách tạo đối tượng employee, hiển thị ra màn hình các thông tin của employee thông qua các hàm getter và getFullName() đã mô tả ở trên.
b.    Tạo mảng chứa danh sách 10 Employee và hiển thị danh sách ra màn hình
c.     Hiển thị Employee theo thứ tự id tăng dần
 

Tham khảo