5
respostas

Duvida

Boa tarde, essas aulas de ArrayList são muito interessante, otimo professor, só que to com uma duvida, para comparar uma String o Collections.sort(); ordena em ordem alfabeticamente, agora já se for um Objeto você tem que ir na classe implementar o Comparable , e depois reescrever o metodo comparaTo, até ai tudo bem, agora minha duvida, é no ultimo tipo de Comparação que foi ensinado, exemplo.

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

sim até ai tudo bem, a minha duvida é, então esse jeito aqui é o mais rapido, e porem não precisar ir na classe e fazer a implementação e nem reescrever o metodo. qual forma é o mais recomendado? obrigado...

5 respostas

Não existe resposta certa. Um cenário é você implementar a interface Comparable na sua classe quando for usar uma ordenação padrão, e usar um Comparator quando tiver uma ordenação diferente e específica para um determinado cenário.

Outro cenário é você utilizar um Comparator se você só precisa da ordenação em um cenário específico em toda a sua aplicação. Talvez implementar Comparable em sua classe neste caso fosse um passo mais trabalhoso do que criar um Comparator pontual, embora o resultado final seja exatamente o mesmo. De qualquer forma, entre implementar Comparable ou criar um Comparator, a decisão dependerá da ocasião, cenário e as vezes até da opinião do desenvolvedor =). A resposta para a pergunta é que isso dependerá de você (ou da equipe se estiver atuando em uma).

Você como desenvolvedor vai acabar encontrando o método que mais se adequá ao seu estilo, ambus estão corretos cabe a você achar o melhor do seu ponto de vista...

essa é a maravilha do mundo da programação, diversos meios de fazer o mesmo projeto..

Boa sorte e bons estudos

Acho que entendi o que você quis dizer e vou explicar de maneira clara: O método sort da classe Collections usa o método compareTo da interface Comparable para que a comparação seja feita. Então, ao reescrever o compareTo dentro da classe, você está definindo a comparação padrão que será feita toda vez que o método sort for chamado.

Mas se eu quiser fazer uma ordenação diferente? ao invés de usar uma String, eu for comparar um atributo int? Ai eu uso o método sort passando como parâmetro o Comparator. Em relação ao Comparator, eu não consigo te passar mais informações pelo fato de não ter estudado isto, porém, não há algo mais ou menos recomendado de uso, ai depende de você definir o que é bom.

Espero ter ajudado.

Cara acho que vai muito do padrão de projeto que você tem que seguir, mas como boa pratica vale apena implementar o comparable se fizer sentido na classe afinal o objetivo normalmente é criar classes genéricas que funcionem de maneira bem abrangente, dessa forma pode se utilizar a mesma classe para vários projetos.

=D

Além de tudo que foi falado acima, vale lembrar que este método "sort" sendo acessado direto na lista foi implementado a partir da versão 8 do Java, ou seja, se você for trabalhar com projetos de versões anteriores terá que implementar o Comparable do "modo antigo" mesmo.