尝试测试 ListIterator 但它进入无限循环
-
21-12-2019 - |
题
我正在用 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()
.)
不隶属于 StackOverflow