答: 是的,需要重新調用.iterator()方法,放回1個新的叠代器.?
原因: 1: ?因為叠代器使用完了,裏面也就沒有元素了,
2: 並且java語言沒有提供重置的方法.?
代碼如下
import?java.util.ArrayList;import?java.util.Iterator;
public?class?ListDemo?{
public?static?void?main(String[]?args)?{
ArrayList<Integer>?list?=?new?ArrayList<Integer>();
list.add(5);
list.add(3);
list.add(2);
Iterator<Integer>?it?=?list.iterator();
while?(it.hasNext())?{
System.out.println(it.next());
}
System.out.println(it.hasNext());//?false?表示沒有元素了
//System.out.println(it.next());//會拋出異常?NoSuchElementException
it?=?list.iterator();?//從集合裏重新獲得叠代器
}
}
拓展思考:
對於此類問題,往往是對java類不太熟悉, 可以經常使用java api文檔, 查看文檔,妳會快速了解到某個類的方法有哪些, 繼承了哪些接口等情況,
比如Iterator類的方法說明如下
方法摘要
boolean hasNext()
如果仍有元素可以叠代,則返回 true。
E next()
返回叠代的下壹個元素。
void remove()
從叠代器指向的 collection 中移除叠代器返回的最後壹個元素(可選操作)。