Poderiam me dar uma overview sobre a diferença entre os dois?
Poderiam me dar uma overview sobre a diferença entre os dois?
Ambos são interfaces, mas ao implementar o Comparable vc define a Ordem Natural de comparação entre dois objetos da mesma classe, ou seja, quando vc fizer um sort() em uma lista com esses objetos, o sort vai usar o metodo que vc definiu para compará-los. Já o comparator possibilita que voce mude o criterio de comparação de um objeto sem mexer na implementação da classe .. vamos super que vc precise ordenar uma lista com objetos de alguma biblioteca, mas vc nao pode mudar a implementação dessa biblioteca e nao pode mudar a Ordem natural de comparação entre esses objetos, entao vc cria um Comparator e passa ele como parametro na hora de chamar o seu sort(), ou seja, voce pode ter varios criterios de ordenação. por exemplo:
`
Collections.sort(footballTeam, playerComparatorByNumber); //
pra comparar o footballTeam pelo numero da camisa
Collections.sort(footballTeam, playerComparatorByName); // pra comparar o footballTeam pelo nome dos jogadores
Collections.sort(footballTeam, playerComparatorByAge); // pra comparar o footballTeam pela idade dos jogadores
Collections.sort(footballTeam); // ao chamar o sort passando apenas a lista, ele iria usar o metodo de comparação que vc implementou através da interface Comparable
`