Open eltosilva opened 11 months ago
Oi, amigo. Bom dia, tudo certinho?
Então, acredito que houve uma confusão no entendimento sobre a interface Comparable
.
Comparable fornece uma única sequência de ordenação. Em outras palavras, podemos ordenar a coleção com base em um único elemento, como id, nome e preço.
Aqui eu estou fazendo uma comparação entre os situações de uso para se utilizar o Comparable X Comparator.
O uso de Comparable
é ideal quando você deseja definir uma ordem natural para uma classe e essa ordem não muda frequentemente. Já o, o Comparator
é mais apropriado quando você deseja ter flexibilidade para definir diferentes ordens de classificação ou quando não pode modificar a classe existente (por exemplo, classes de bibliotecas externas).
Embora a implementação que você forneceu usando a interface Comparable
esteja correta, ela pode se tornar complexa e difícil de manter à medida que os critérios de ordenação aumentam ou mudam.
Nesses casos, é uma boa prática usar um Comparator
em vez de modificar a classe em si.
Inclusive, quando você utiliza do Stream API,
é utilizado de forma extensiva a interface Comparator
.
https://pt.stackoverflow.com/questions/342237/diferen%C3%A7a-entre-comparator-e-comparable
Você cometeu um equivoco no README em relação ao uso da interface Comparable, ao dizer que na implementação da interface so se pode usar um atributo da classe. Ao implementar a interface Comparable posso usar mais de um atributo da classe para ordenação, tudo vai depende dos requisitos da classe. Exemplo: Em um sistema para uma concessionária, no requisito do sistema foi definido a
class Carro { private String marca; private String modelo; private int ano; }
, e que ordenação padrão (natural) da mesma é pela marca, modelo e ano (nessa ordem). Então posso implementa-lá da seguinte forma: