我有一个大学作业,要求我实现一个实现迭代器接口的内部类。迭代器适用于单链表超类。
目前我的内部类是这样的:
private class ListIterator implements Iterator<V>{
Node temp;
boolean nextCalled = false;
ListIterator(Node fo){
this.temp = fo;
}
@Override
public boolean hasNext() {
if(temp != null){
return true;
}
return false;
}
@Override
public V next() {
nextCalled = true;
return temp.getReprValue();
}
@Override
public void remove() {
if(nextCalled && hasNext()){
nextCalled = false;
removeElement(temp.getReprKey());
temp = temp.getNext();
}
}
}
现在我的问题是,即使列表实际上是空的,hasNext() 方法也会返回 true。其他一切似乎都有效。我可能在某个地方忽略了一个逻辑缺陷,但我自己找不到。