1
resposta

O Comparator é melhor que o compareTo?

Na aula, usamos o Comparator para ordenar por tempo:

aulas.sort(Comparator.comparing(Aula::getTempo));

Testei usar o Comparator também para a ordem alfabética:

aulas.sort(Comparator.comparing(Aula::getTitulo));

Funcionou corretamente. Com isso, eu poderia apagar o método compareTo da classe Aula, assim como poderia apagar o "implements Comparable". O código fica muito mais enxuto.

Isso é considerado boa prática? Eu posso priorizar a utilização do Comparator e "esquecer" o compareTo? Ou o compareTo é mais utilizado e considerado melhor?

1 resposta

Olá Cristiano, tudo bem?

É uma ótima pergunta! O uso do Comparator ou do compareTo depende do que você precisa fazer. O Comparator é utilizado quando você precisa ordenar uma lista de acordo com um critério específico que não é natural da classe, como no exemplo que você citou. Já o compareTo é utilizado quando você precisa definir uma ordem natural para a classe, ou seja, uma ordem que faça sentido para a própria classe.

No seu caso, se você não precisa de uma ordem natural para a classe Aula, pode sim utilizar apenas o Comparator e apagar o método compareTo e o "implements Comparable". Isso torna o código mais enxuto e mais fácil de entender.

Porém, se em algum momento você precisar de uma ordem natural para a classe Aula, será necessário implementar o compareTo novamente.

Espero ter ajudado e bons estudos!