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 позволява създаването на множество външни начини за сравнение.