Olá, tenho um ArrayList do tipo Equipamento e gostaria de saber uma boa maneira de organiza-lo e retirar seus elementos repetidos.
Andei lendo alguns tópicos e vi que uma possível solução seria usar a estrutura TreeSet.
Também gostaria de saber se eu posso determinar uma classe que implementa Comparator para poder ordenar
essa estrutura da maneira que eu quiser como faço com o ArrayList.
Collections.sort(listaDeEquipamentos, new ComparaPorFabricante());
Obrigado.
Para criar uma lista sem elementos duplicados você deve utilizar uma classe que implemente a interface Set, até onde sei estas são: HashSet, LinkedHashSet e TreeSet. Utilizando estas classes ela elimina, automaticamente, os elementos duplicados (as cópias).
E para ordená-los, em ordem alfabética, usa-se o método .sort().
Sobre a interface Comparator, não posso falar nada, porque esta foi a primeira vez que eu ouvi falar nela (sou novo em Java, tá?!), desculpa por não ajudar :cry: :cry: :cry: :cry: .
Sim, basta usar um TreeSet.
E passar o comparador no construtor:
SortedSet<Equipamento> setDeEquipamentos = new TreeSet<>(new CompararPorFabricante());
setDeEquipamentos.addAll(listaDeEquipamentos);
O resultado já estará ordenado e sem repetições. Não é necessário chamar o método sort, pois esse método nem existe nos sets, hehehe.
Flavio05, para aprender sobre o Comparator e o Comparable, leia o tópico:
[quote=ViniGodoy]Sim, basta usar um TreeSet.
E passar o comparador no construtor:
SortedSet<Equipamento> setDeEquipamentos(new CompararPorFabricante());
setDeEquipamentos.addAll(listaDeEquipamentos);
O resultado já estará ordenado e sem repetições. Não é necessário chamar o método sort, pois esse método nem existe nos sets, hehehe.
Flavio05, para aprender sobre o Comparator e o Comparable, leia o tópico:
Excelente tópico, valeu!!!
[quote=ViniGodoy]Sim, basta usar um TreeSet.
E passar o comparador no construtor:
SortedSet<Equipamento> setDeEquipamentos(new CompararPorFabricante());
setDeEquipamentos.addAll(listaDeEquipamentos);
O resultado já estará ordenado e sem repetições. Não é necessário chamar o método sort, pois esse método nem existe nos sets, hehehe.
Flavio05, para aprender sobre o Comparator e o Comparable, leia o tópico:
Funcionou perfeitamente.
O codigo final segue a ideia abaixo.
SortedSet<Equipamento> listaDeEquipamentos = new TreeSet<Equipamento>(new ComparaPorFabricante());
listaDeEquipamentos .addAll(listaAux);
Muito obrigado.
Pois é, vi que tinha um erro de sintaxe só agora. Acho que tava com a sintaxe do C++ na cabeça. Ou é sono mesmo.