如果我为myList设置了一个迭代器:
Iterator iter = myList.iterator();
while(iter.hasNext())
{
MyObj myObj = (MyObj)iter.next();
doPrint(myObj.toString());
}
我第二次称呼它:
while(iter.hasNext())
{
MyObj myObj = (MyObj)iter.next();
doPrint(myObj.toString());
}
我第二次打电话给它时会回到收藏的开头吗?
答案 0 :(得分:33)
iter.hasNext()
将立即返回false
,因此循环内的代码将不会被执行。
但是,如果重新创建迭代器(通过list.iterator()
),迭代将从头重新开始。
答案 1 :(得分:9)
迭代器接口只提供三种方法:
所以没有办法告诉迭代器“重置”,“从头重启”或“返回”。一旦它位于底层序列的最后一个元素上,就完成了它的工作,并且不需要保留引用。 Whisper R.I.P并使其符合Big GC。
答案 2 :(得分:3)
第二部分不会被执行,因为iter.hasNext()返回false ...