Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ των διεπαφών Comparator και Comparable στη Java;

sobes.tech AI

Απάντηση από AI

Στην Java, οι διεπαφές Comparable και Comparator χρησιμοποιούνται για τη σύγκριση αντικειμένων, αλλά έχουν διαφορετικούς σκοπούς:

  • Comparable — ορίζει την φυσική σειρά των αντικειμένων. Η κλάση υλοποιεί αυτήν τη διεπαφή ώστε τα αντικείμενα να μπορούν να συγκρίνονται μεταξύ τους μέσω της μεθόδου compareTo(). Χρησιμοποιείται συνήθως για προεπιλεγμένη ταξινόμηση.

  • Comparator — είναι ένα ξεχωριστό αντικείμενο που ορίζει έναν εναλλακτικό τρόπο σύγκρισης δύο αντικειμένων. Χρησιμοποιείται όταν θέλουμε να ταξινομήσουμε αντικείμενα με διαφορετικά κριτήρια ή όταν η κλάση δεν υλοποιεί το Comparable.

Παράδειγμα:

class Person implements Comparable<Person> {
    String name;
    int age;

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // φυσική σειρά κατά όνομα
    }
}

// Comparator για ταξινόμηση κατά ηλικία
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Έτσι, το Comparable ορίζει έναν τρόπο σύγκρισης εντός της κλάσης, ενώ το Comparator επιτρέπει τη δημιουργία πολλαπλών εξωτερικών τρόπων σύγκρισης.