Java中如果集合迭代器已经迭代完了,如果还想迭代,只能在调用一遍iterator返回一个新的吗?
2个回答
展开全部
答: 是的,需要重新调用.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 中移除迭代器返回的最后一个元素(可选操作)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询