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?

Foi útil?

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
scroll top