Repaso
English
Java CoreIntermedioJV-28

¿Cuándo usarías Comparator en lugar de Comparable?

Opciones

  1. Comparable es para ordenar; Comparator es para hashing
  2. Comparable es el orden natural; Comparator es externo (Opción correcta)
  3. Son idénticos, solo cambia el nombre del método
  4. Comparator solo funciona con números y nunca con objetos

Respuesta

Comparable define el orden natural dentro de la clase; Comparator define órdenes adicionales o externos sin cambiar la clase

Por qué

Comparable<T> lo implementa la propia clase con compareTo. Define UN orden natural (por ejemplo String alfabético, Integer numérico).

Comparator<T> es un objeto aparte con compare(a, b). Puedes tener muchos: por nombre, por edad, por fecha. También es la única opción cuando no puedes modificar la clase.

Estilo moderno: people.sort(Comparator.comparing(Person::getAge).thenComparing(Person::getName)).

Recuerda

Comparable = orden natural dentro. Comparator = órdenes a medida fuera.

Términos clave

Practica esta pregunta en Repaso