Sobes.tech
Junior — Middle

Qual é a diferença entre as interfaces Comparator e Comparable em Java?

sobes.tech IA

Resposta da IA

Em Java, as interfaces Comparable e Comparator são usadas para comparar objetos, mas têm propósitos diferentes:

  • Comparable — define a ordem natural dos objetos. A classe implementa esta interface para que os objetos possam ser comparados entre si usando o método compareTo(). Geralmente é usada para ordenação padrão.

  • Comparator — é um objeto separado que define uma forma alternativa de comparar dois objetos. É usado quando se deseja ordenar objetos por critérios diferentes ou quando a classe não implementa Comparable.

Exemplo:

class Person implements Comparable<Person> {
    String name;
    int age;

    public int compareTo(Person other) {
        return this.name.compareTo(other.name); // ordem natural por nome
    }
}

// Comparator para ordenar por idade
Comparator<Person> ageComparator = new Comparator<Person>() {
    public int compare(Person p1, Person p2) {
        return Integer.compare(p1.age, p2.age);
    }
};

Assim, Comparable define uma forma de comparação interna na classe, enquanto Comparator permite criar múltiplas formas externas de comparação.