Java中如果集合迭代器已经迭代完了,如果还想迭代,只能在调用一遍iterator返回一个新的吗?

 我来答
雪飞潇潇
2018-01-19 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:867万
展开全部
  • 答:     是的,需要重新调用.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 中移除迭代器返回的最后一个元素(可选操作)。    

百度网友200b114
2018-01-18 · TA获得超过261个赞
知道小有建树答主
回答量:324
采纳率:66%
帮助的人:174万
展开全部
没错,是这样的
追问
有办法重置迭代器吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式