Пытаюсь протестировать ListIterator, но он переходит в бесконечный цикл

StackOverflow https://stackoverflow.com//questions/24049431

Вопрос

Я программирую на Java, я создал класс для получения одного итератора, так как я использую только один список в этой программе с этим кодом

public ListIterator<T> iterateur() {
    ListIterator<T> it = liste.listIterator();
    return it;
}

И тогда я пытаюсь использовать его с помощью этого метода

public int ObtenirNbElments(int priorite) {
    int nbPrio=0;
    while(this.iterateur().hasNext()){
        if(this.iterateur().next().obtenirPriorite() == priorite){
            nbPrio++;
        }
    }
    return nbPrio;
}

Всякий раз, когда я использую его со своим тестовым классом как таковым:

    listePriorite.ajouter(elt1);
    listePriorite.ajouter(elt2);
    listePriorite.ajouter(elt3);
    listePriorite.ajouter(elt4);
    listePriorite.ajouter(eltd1);
    assertEquals(2,listePriorite.ObtenirNbElments(1));

Кажется, что это входит в бесконечный цикл, почему это так?

Это было полезно?

Решение

Каждый раз, когда вы вызываете iterateur() вы создаете и возвращаете новый ListIterator.Вызовите метод только один раз и сохраните результат.Повторно используйте тот же объект.

int nbPrio=0;
ListIterator<T> it = this.iterateur();
while(it.hasNext()){
    if(it.next().obtenirPriorite() == priorite){
        nbPrio++;
    }
}
return nbPrio;

(Я предполагаю, что ваш T имеет границы, которые имеют смысл с obtenirPriorite().)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top