while(itQuantidades.hasNext()){
QuantidadeOrcamento item = itQuantidades.next();
double quantidadeProcurar = item.getQuantidadeOriginal();
System.out.println("Quantidade procurada: "+quantidadeProcurar);
if(!continua){
break;
}
Iterator<FormatoIntervalo> itIntervalos = listaIntervalo.iterator();
while(itIntervalos.hasNext()){
FormatoIntervalo quantidadeValorFormato = itIntervalos.next();
boolean valorFixo = quantidadeValorFormato.isFixo();
double quantidadeInicio = quantidadeValorFormato.getInicio();
double quantidadeFim = quantidadeValorFormato.getFim();
System.out.println("Comparando: "+quantidadeProcurar+" >= "+quantidadeInicio+" && "+quantidadeProcurar+" <= "+quantidadeFim);
if (quantidadeProcurar >= quantidadeInicio && quantidadeProcurar <= quantidadeFim) {
// Achou a quantidade no intervalo
if(valorFixo && frenteVerso){
// Dobrar a quantidade para fazer nova busca
quantidadeProcurar = item.getQuantidade() * 2;
/*
* Preciso aqui que o 'itIntervalos 'volte a ser varrido desde a 1a. posicao,
* ou seja, preciso que o looping seja reiniciado pois preciso que
* a busca pela quantidade seja feita pelo novo valor de 'quantidadeProcurar'
*/
} else {
continua = false;
System.out.println("Encontrou: "+quantidadeProcurar+" >= "+quantidadeInicio+" && "+quantidadeProcurar+" <= "+quantidadeFim);
listaQuantidadeFormato.add(quantidadeValorFormato);
System.out.println("Tamanho lista formatos retornada: "+listaQuantidadeFormato.size());
break;
}
}
}
}
Como Reiniciar um Looping em um Iterator?
J
Preciso que durante uma interação o looping seja reiniciado, o motivo é porque tem uma quantidade que procuro em um intervalo e dependendo de onde ela é encontrada ela deve ser dobrada e feita a busca novamente, porém agora buscando a quantidade dobrada (x2).
Não sei como fazer novamente para meu Itetator reiniciar.
Alguma dica ou alguma outra forma que eu poderia fazer isso nessa coleção?
5 Respostas
T
Você precisa criar um novo iterador, usando listaIntervalo.iterator().
J
Não entendi, criar outro como? Onde? Preciso que ele continue do começo novamente, mesmo porque ele está dentro de um outro while o objeto item.
L
Tem uma discussão bacana sobre o assunto neste tópico:
http://forums.sun.com/thread.jspa?threadID=587562
Basicamente eles acabam citando o que o thingol falou. A dica extra que vai ter lá é dar uma olhada no ResettableIterator do Commons Collections:
http://commons.apache.org/collections/api-release/org/apache/commons/collections/ResettableIterator.html
L
Não entendi, criar outro como? Onde? Preciso que ele continue do começo novamente, mesmo porque ele está dentro de um outro while o objeto item.
Entao tenta algo tipo isto
itQuantidades = listaQuantididade.iterator();
break;
J
Resolvido:
while(itQuantidades.hasNext()){
QuantidadeOrcamento item = itQuantidades.next();
double quantidadeProcurar = item.getQuantidadeOriginal();
System.out.println("Quantidade procurada: "+quantidadeProcurar);
if(!continua){
break;
}
Iterator<FormatoIntervalo> itIntervalos = listaIntervalo.iterator();
while(itIntervalos.hasNext()){
FormatoIntervalo quantidadeValorFormato = itIntervalos.next();
boolean valorFixo = quantidadeValorFormato.isFixo();
double quantidadeInicio = quantidadeValorFormato.getInicio();
double quantidadeFim = quantidadeValorFormato.getFim();
System.out.println("Comparando: "+quantidadeProcurar+" >= "+quantidadeInicio+" && "+quantidadeProcurar+" <= "+quantidadeFim);
if (quantidadeProcurar >= quantidadeInicio && quantidadeProcurar <= quantidadeFim) {
// Achou a quantidade no intervalo
if(valorFixo && frenteVerso){
// Dobrar a quantidade para fazer nova busca
quantidadeProcurar = item.getQuantidade() * 2;
// Isso aqui resolveu o problema
itIntervalos = listaIntervalo.iterator();
/*
* Preciso aqui que o 'itIntervalos 'volte a ser varrido desde a 1a. posicao,
* ou seja, preciso que o looping seja reiniciado pois preciso que
* a busca pela quantidade seja feita pelo novo valor de 'quantidadeProcurar'
*/
} else {
continua = false;
System.out.println("Encontrou: "+quantidadeProcurar+" >= "+quantidadeInicio+" && "+quantidadeProcurar+" <= "+quantidadeFim);
listaQuantidadeFormato.add(quantidadeValorFormato);
System.out.println("Tamanho lista formatos retornada: "+listaQuantidadeFormato.size());
break;
}
}
}
}
Criado 3 de julho de 2009
Ultima resposta 3 de jul. de 2009
Respostas 5
Participantes 3