Tentando testar um ListIterator mas ele entra em loop infinito
-
21-12-2019 - |
Pergunta
Estou programando em Java criei uma classe para obter um iterador pois estou usando apenas uma lista neste programa com este código
public ListIterator<T> iterateur() {
ListIterator<T> it = liste.listIterator();
return it;
}
E então tento usá-lo com este método
public int ObtenirNbElments(int priorite) {
int nbPrio=0;
while(this.iterateur().hasNext()){
if(this.iterateur().next().obtenirPriorite() == priorite){
nbPrio++;
}
}
return nbPrio;
}
Sempre que eu uso com minha classe de teste como tal:
listePriorite.ajouter(elt1);
listePriorite.ajouter(elt2);
listePriorite.ajouter(elt3);
listePriorite.ajouter(elt4);
listePriorite.ajouter(eltd1);
assertEquals(2,listePriorite.ObtenirNbElments(1));
Parece entrar em um loop infinito, por que isso?
Solução
Cada vez que você invoca iterateur()
você cria e retorna um novo ListIterator
.Chame o método apenas uma vez e armazene o resultado.Reutilize o mesmo objeto.
int nbPrio=0;
ListIterator<T> it = this.iterateur();
while(it.hasNext()){
if(it.next().obtenirPriorite() == priorite){
nbPrio++;
}
}
return nbPrio;
(presumo que seu T
tem limites que fazem sentido com obtenirPriorite()
.)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow