Como posso fazer para se filtrar uma List por um determinado campo?
Eu tenho aqui uma classe ContaBancaria que possui um atributo com o número da agência de cada conta.
Se eu colocar todas as contas em uma List, como poderia fazer por exemplo para criar uma outra List contendo todos os números de agência sem repetição?
Como você quer remover as repetições, a idéia é usar um Set e copiar o resultado de volta. (Daqui a pouco eu posto o resultado)
T
thingol
importjava.util.*;classContaBancaria{privateintagencia;privateintconta;privateStringnome;publicContaBancaria(intpAgencia,intpConta,StringpNome){agencia=pAgencia;conta=pConta;nome=pNome;}publicintgetAgencia(){returnagencia;}// etc.publicStringtoString(){return"[agencia/conta = "+agencia+"/"+conta+"; nome = "+nome+"]";}}classTesteContas{publicstaticvoidmain(String[]args){List<ContaBancaria>contas=newArrayList<ContaBancaria>();contas.add(newContaBancaria(110,234567,"Fernando Henrique"));contas.add(newContaBancaria(220,234567,"Luis Inacio"));contas.add(newContaBancaria(110,234567,"Paulo Salim"));// Imprimindo as contasSystem.out.println(contas);// Agora listando as agências sem repetiçãoSet<Integer>agencias=newTreeSet<Integer>();for(ContaBancariaconta:contas){agencias.add(newInteger(conta.getAgencia()));}// Imprimindo as agências, sem repetiçãoSystem.out.println(agencias);// deve imprimir [110, 220]}}
G
gustavodelgado
thingol:
Um pouco braçal - use um “for”.
Como você quer remover as repetições, a idéia é usar um Set e copiar o resultado de volta. (Daqui a pouco eu posto o resultado)
Obrigado, funcionou. Agora estou com outra dúvida… tem uma maneira fácil para se converter um Set em um List?
Estou usando um ObjectListDataProvider para fornecer os dados para um combo (em jsf), e não consigo associar a ele um Set, só a uma List.
Valeu, []s
T
thingol
List<Integer>listaAgencias=newArrayList<Integer>();listaAgencias.addAll(agencias);// onde agencias é o set que passei antes
C
Cristiano_Pires1
thingol, como vocÊ faria pra imprimir o resultado da arraylist no java 1.4, onde você não pode fazer isso: