Ποια είναι η διαφορά μεταξύ των διεπαφών 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 επιτρέπει τη δημιουργία πολλαπλών εξωτερικών τρόπων σύγκρισης.