Boa tarde pessoal, tudo bem com vocês?
Estou tendo a seguinte situação, tenho duas listas, na qual a lista lstQuestor possui alguns dados e um valor, a lstBordero possui outros dados e um valor.
Necessito cruzar as informações e verificar se o valor da lstQuestor é igual ao valor da lstBordero, caso seja, eu devo remover esse registro de ambas as listas.
Fiz a implementação utilizando o for mas apos muitos erros verifiquei que para listas que estão sendo “loopadas” o Iterator é o mais indicado.
Ai no caso eu consegui chegar ao seguinte resultado:
while (itrQuestor.hasNext()) {
a++;
double vQuestor = itrQuestor.next().getValor();
while (itrBordero.hasNext()) {
b++;
double vBordero = itrBordero.next().getValor();
System.out.println(b + " - " + vQuestor + " - " + vBordero);
if (vQuestor == vBordero) {
itrQuestor.remove();
itrBordero.remove();
}
}
}
Verifiquei que sempre que executo o código o primeiro loop do itrQuestor.hasNext()
faz com que o itrBordero.hasNext()
seja executado até o fim, mas no segundo loop do itrQuestor.hasNext()
o itrBordero.hasNext()
não é executado, me parece que eu de alguma forma teria que voltar a lista ao inicio mas não sei se estou correto.
Alguém saberia me dizer se é nessa linha mesmo?
E se existir outras formas de comparar os registros da primeira lista com a segunda lista e remover o registros de ambas as listas quando o valor for o mesmo também sera bem vinda.