java - 尝试测试 ListIterator 但它进入无限循环

标签 java infinite-loop listiterator

我正在使用 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() 有意义的界限。)

关于java - 尝试测试 ListIterator 但它进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24049431/

相关文章:

c++ - 双向解引用迭代器的返回类型

java - 在 Android Eclipse 中将光标值添加到 ArrayList 中

java - SimpleDateFormat,需要文本月份

java - 我们如何在 FXML 中定义上下文菜单?

java - 如何从字符串值中获取 ENUM - JAVA

java - 显示SVG时无限循环,发现问题,无法解决

java - 不使用 previous 的 ListIterator 解决方案

javascript - Javascript 无限循环会阻止渲染吗?

java - 为什么这个 do while 循环无限运行?

c++ - 我们可以在没有 'advance' 函数的情况下增加迭代器多个位置吗?