为什么这里一定要Itertor it=c.itertor();

yyguy 2017-11-16 08:18:01


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

class Test{
public static void main(String[] args){
Collection c =new ArrayList();
c.add("zxc");
c.add("qwe");
for( c.iterator();c.iterator().hasNext();)

{
System.out.println(c.iterator().next());
}
}
}

这个不断输出“”zxc“”
为什么一定要将循环改成

for(Itertor it=c.itertor();it.hasNext();)
{
System.out.println(it.next());
}
才能正确输出
...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyguy 2017-11-16
  • 打赏
  • 举报
回复
虽然已经懂了 不过还是谢谢你
xj1207 2017-11-16
  • 打赏
  • 举报
回复
上面的代码你每次循环都会创建一个新的指向集合开头的迭代器,永远不会遍历到第2个元素。hasNext()永远返回true,死循环了。因为改成下面就始终使用一个迭代器来遍历了。每次用集合调用iterator()都会给你返回一个指向集合开头的迭代器。
yyguy 2017-11-16
  • 打赏
  • 举报
回复
知道问题所在了 几次c.itertor()所指对象不同

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧