Java compare()

Giới thiệu về Java compare()

Trong ngôn ngữ lập trình Java, phương thức compare() thường được sử dụng để so sánh hai đối tượng với nhau. Nó rất hữu ích trong các tình huống cần so sánh thứ tự của các giá trị, chẳng hạn như khi sắp xếp hoặc tìm kiếm trong danh sách.

Định nghĩa

Java cung cấp nhiều lớp có phương thức compare(), nhưng phổ biến nhất là trong lớp ComparableComparator. Cả hai giao diện này đều cho phép bạn định nghĩa cách mà các đối tượng sẽ được so sánh.

Cú pháp

1. Comparable

Khi một lớp thực hiện giao diện Comparable, nó cần định nghĩa phương thức compareTo(T o). Phương thức này so sánh đối tượng hiện tại với đối tượng được truyền vào và trả về:

  • Giá trị âm nếu đối tượng hiện tại nhỏ hơn đối tượng truyền vào.
  • Giá trị 0 nếu chúng bằng nhau.
  • Giá trị dương nếu đối tượng hiện tại lớn hơn đối tượng truyền vào.

2. Comparator

Giao diện Comparator cho phép bạn định nghĩa nhiều cách so sánh các đối tượng. Bạn cần định nghĩa phương thức compare(T o1, T o2) mà so sánh hai đối tượng và trả về giá trị tương tự như trong Comparable.

Ví dụ

1. Sử dụng Comparable

class Student implements Comparable {
    String name;
    int age;

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int compareTo(Student other) {
        return this.age - other.age; // So sánh theo độ tuổi
    }
}

public class Main {
    public static void main(String[] args) {
        List students = new ArrayList<>();
        students.add(new Student("Alice", 20));
        students.add(new Student("Bob", 18));
        students.add(new Student("Charlie", 22));

        Collections.sort(students); // Sắp xếp danh sách sinh viên theo tuổi
        for (Student student : students) {
            System.out.println(student.name + " - " + student.age);
        }
    }
}

2. Sử dụng Comparator

class Student {
    String name;
    int age;

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        List students = new ArrayList<>();
        students.add(new Student("Alice", 20));
        students.add(new Student("Bob", 18));
        students.add(new Student("Charlie", 22));

        // Sử dụng Comparator để sắp xếp theo tên
        Collections.sort(students, new Comparator() {
            @Override
            public int compare(Student s1, Student s2) {
                return s1.name.compareTo(s2.name); // So sánh theo tên
            }
        });

        for (Student student : students) {
            System.out.println(student.name + " - " + student.age);
        }
    }
}

Kết luận

Phương thức compare() trong Java là một phần không thể thiếu trong việc làm việc với các đối tượng. Việc hiểu rõ cách sử dụng ComparableComparator giúp bạn có thể sắp xếp và tùy chỉnh thứ tự của các đối tượng một cách linh hoạt. Hãy thử áp dụng vào dự án của bạn để thấy rõ sự tiện lợi mà chúng mang lại!