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