Sobes.tech
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.