Uma estou com uma duvida!!
precisa iterar 2 listas e imprimir os valores alterados:
por exemplo:
tenho a listaA e a lista B,
eu preciso de forma dinamica iterar as 2 listas e imprimir os dados da seguinte forma:
Mas como colocar o codigo para agir desta forma?!?!?
Suponha que as listas tenham o mesmo tamanho, e que sejam na verdade ArrayList ou Vector (o que nem sempre é o caso). Se for o caso, é fácil:
if(listaA.size()==listaB.size()){
intn=listaA.size();for(inti=0; i < n; ++i) {System.out.println(listaA.get(i));System.out.println(listaB.get(i));}
}
Se não tiverem o mesmo tamanho, e se for uma LinkedList (onde o acesso indexado é MUITO lento, mas via iteradores é mais rápido), posto uma solução daqui a pouco.
T
thingol
importjava.util.*;/** * Este exemplo pode ser compilado com Java 1.4 ou anterior. * Com Java 5 vai ter um "warning". */classDuasListas{// Note que as listas têm comprimentos diferentesstaticString[]vetor1={"Luis","Geraldo","Heloisa","Christovam"};staticString[]vetor2={"Inacio","Alckmin","Helena","Buarque","Gabeira"};staticListvetorParaLista(String[]vetor){Listretorno=newLinkedList();for(inti=0;i<vetor.length;++i){retorno.add(vetor[i]);}returnretorno;}publicstaticvoidmain(String[]args){ListlistaA=vetorParaLista(vetor1);ListlistaB=vetorParaLista(vetor2);IteratoritA=listaA.iterator();IteratoritB=listaB.iterator();booleanaHasNext=itA.hasNext();booleanbHasNext=itB.hasNext();while(aHasNext||bHasNext){if(aHasNext){Stringa=(String)itA.next();if(a!=null)System.out.print("|"+a);}if(bHasNext){Stringb=(String)itB.next();if(b!=null)System.out.print("|"+b);}aHasNext=itA.hasNext();bHasNext=itB.hasNext();}}}
zepunk
Esse exemplo à cima funciona e é um jeito bom e funcional.
Porém o legal é começar a usar o Java 5, não sei se vocês podem utilizar esta versão mas ela é a Atual né, sendo assim vc poderia utilizar o For Each.
for(Strings:List<String>){System.out.println(s);}
T
thingol
O problema dele é andar em DUAS listas ao mesmo tempo. Para esse tipo de coisas o “foreach” poderia ser até assim:
List<String>listaA=newArrayList<String>();List<String>listaB=newArrayList<String>();...if(listaA.size()==listaB.size()){Iterator<String>it=listaB.iterator();for(Stringa:listaA){System.out.println(a);// até aqui tudo bem...System.out.println(itB.next());// não me livrei de usar um iterator :(}}
Ou seja, fica meio “frankenstein” - moral: nem sempre é adequado usar o “for each”.
leosouzabh
Caros amigos,
Acho que eu me esqueci de um detalhe!!
Eu gostaria de usar essa iteração atravez das JSTL do struts,
alguem sabe me dizer?!?!?