Junior — Middle
Jaka jest różnica między interfejsami Comparator i Comparable w Java?
sobes.tech AI
Odpowiedź od AI
W Javie interfejsy Comparable i Comparator służą do porównywania obiektów, ale mają różne cele:
-
Comparable — określa naturalny porządek obiektów. Klasa implementuje ten interfejs, aby obiekty mogły być porównywane za pomocą metody
compareTo(). Zazwyczaj używany do domyślnego sortowania. -
Comparator — jest osobnym obiektem, który ustala alternatywny sposób porównywania dwóch obiektów. Używa się go, gdy trzeba sortować obiekty według różnych kryteriów lub gdy klasa nie implementuje
Comparable.
Przykład:
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // naturalny porządek po imieniu
}
}
// Comparator do sortowania po wieku
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
W ten sposób, Comparable ustala jeden sposób porównania wewnątrz klasy, a Comparator pozwala tworzyć wiele zewnętrznych metod porównania.