¿Cuándo usarías Comparator en lugar de Comparable?
Opciones
Comparablees para ordenar;Comparatores para hashingComparablees el orden natural;Comparatores externo (Opción correcta)- Son idénticos, solo cambia el nombre del método
Comparatorsolo 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.