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.