1
resposta

Comparable <> e Comparator

Comparator é usado para o método sort das listas. por ex :

lista.sort(new Comparator()...); // Sei que podemos usar lambdas e fazer sem o new e etc...

Comparable é uma interface usada em classes, para que a gente possa usar:

Collections.sort(Alguma List<nossaClasse> ); // por ex se dentro dos generics fosse a classe Aula. ela obrigatoriamente deve implementar a interface Comparable e implementar o método compareTo também

Podem confirmar se está certo?

1 resposta

Olá Andrew

Você está correto.

Quando sua classe implementa a interface Comparable, o método compareTo da classe define a ordem desse objeto quando comparado a outro. Já um Comparator é sua própria definição de como comparar dois objetos e pode ser usado para comparar objetos de uma forma que pode não se alinhar com a ordem natural usando compareTo.

Por exemplo, Strings geralmente são comparados em ordem alfabética. Assim, o "a".compareTo("b") usaria comparações alfabéticas. Se você quisesse comparar Strings em comprimento, você precisaria escrever um Comparator.

Resumindo, não há muita diferença. Ambos são fins para meios semelhantes.