Junior — Middle
¿Cuál es la diferencia entre las interfaces Comparator y Comparable en Java?
sobes.tech AI
Respuesta de la IA
En Java, las interfaces Comparable y Comparator se utilizan para comparar objetos, pero tienen diferentes propósitos:
-
Comparable — define el orden natural de los objetos. La clase implementa esta interfaz para que los objetos puedan compararse entre sí mediante el método
compareTo(). Se usa generalmente para ordenar por defecto. -
Comparator — es un objeto separado que establece una forma alternativa de comparar dos objetos. Se usa cuando se necesita ordenar objetos por diferentes criterios o cuando la clase no implementa
Comparable.
Ejemplo:
class Person implements Comparable<Person> {
String name;
int age;
public int compareTo(Person other) {
return this.name.compareTo(other.name); // orden natural por nombre
}
}
// Comparator para ordenar por edad
Comparator<Person> ageComparator = new Comparator<Person>() {
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
};
De esta manera, Comparable establece una forma de comparación dentro de la clase, y Comparator permite crear múltiples formas externas de comparación.