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

时间:2014-06-04 23:47:22

标签: 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));

似乎进入无限循环为什么会这样?

1 个答案:

答案 0 :(得分:4)

每次调用iterateur()时,您都会创建并返回新的ListIterator。只调用一次方法并存储结果。重复使用相同的对象。

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

(我假设你的TobtenirPriorite()有界限。)