Junior — Middle
Kuo skiriasi Java interfeisai Comparator ir Comparable?
sobes.tech AI
Atsakymas iš AI
Java kalboje Comparable ir Comparator sąsajos naudojamos objektų palyginimui, tačiau turi skirtingus tikslus:
-
Comparable — apibrėžia objektų natūralųjį tvarką. Klasė įgyvendina šią sąsają, kad objektai galėtų būti lyginami naudojant metodą
compareTo(). Paprastai naudojama numatytojo rūšiavimo tikslais. -
Comparator — yra atskiras objektas, kuris nustato alternatyvų būdą palyginti du objektus. Naudojama, kai reikia rūšiuoti objektus pagal skirtingus kriterijus arba kai klasė neįgyvendina
Comparable.
Pavyzdys:
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // natūralusis tvarkas pagal vardą
}
}
// Comparator pagal amžių
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
Taip Comparable nustato vieną būdą palyginti objektus klasės viduje, o Comparator leidžia kurti daugybę išorinių palyginimo būdų.