java中for循环和iterator迭代的区别

 我来答
源念云F
2010-04-29 · TA获得超过685个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:293万
展开全部
for循环是语言中循环控制结构。
而iterator则是用来遍历集合中的元素。本身是不能够循环遍历需要借助循环控制语句进行迭代元素。
个人认为iterator封装了循环体遍历元素的细节,使得编程人员无需关心集合结构,以及访问元素的操作。
例如:
for(int i=0;i<size;i++){
Object o=list.get(i);//List遍历元素
}
for(int i=0;i<size;i++){
Object o=objects[i];//数组遍历元素
}
而对iterator来说,使用一个统一的接口来访问具体的集合元素.
while(iterator.hasNext()){
Object o=iterator.next();//统一的接口来访问具体的集合元素.
}
说到这,相信你对iterator和for语句有一个新的认识了吧!
战玉兰菅罗
2019-05-22 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.3万
采纳率:33%
帮助的人:946万
展开全部
for
each语句是由iterator实现的,正如你所说,他们的不同之处就在于remove()方法上。
一般调用删除方法都是集合的方法,例如:
list
list
=
new
arraylist();
list.add(...);
list.remove(...);
但是,如果在循环的过程中调用集合的remove()方法,就会导致循环出错,例如:
for(int
i=0;i<list.size();i++){
list.remove(...);
}
循环过程中list.size()的大小变化了,就导致了错误。
所以,如果你想在循环语句中删除集合中的某个元素,就要用迭代器iterator的remove()方法,因为它的remove()方法不仅会删除元素,还会维护一个标志,用来记录目前是不是可删除状态,例如,你不能连续两次调用它的remove()方法,调用之前至少有一次next()方法的调用。
如果你想了解的更透彻,可以查看一下原码,看它是怎么实现的。
因为for
each语句是由iterator语句实现的,所以如果你在循环中删除某个元素时,应该用iterator的remove()方法,可是这时你又没有iterator对象,怎么调用呢?
所以,这种情况下,一般还是用iterator来循环访问,并筛选删除。
说白了,for
each就是为了让用iterator循环访问的形式看着更好看,写起来更方便。但如有删除操作,当然还是用它原来的形式了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1a812615e
推荐于2017-10-03 · TA获得超过1146个赞
知道小有建树答主
回答量:739
采纳率:66%
帮助的人:413万
展开全部
记录的存取方式有两种:一种是顺序存储,另一种是链接存储
对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)
则必须找到其前一个记录的位置才能够找到本记录。

所以for循环便于访问顺序存储的记录,比如数组等
而迭代则更适用于链接存储的记录,虽然Java中有些底层通过链接存储原理实现的集合
也可以通过下标获取指定的记录,但是其每次都必须从链表头开始查找记录,这样会影响查找的效率

以上为本人的理解。。。如果有误请谅解。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Q7312569
2010-04-30 · 超过20用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:49万
展开全部
for用于循环 底层以数组为数据结构的数据 例如ArrayList,数组
而iterator 用于循环 底层以链表为数据结构的数据 例如 HashSet, LinkedList
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
典德元qh
2010-04-29 · TA获得超过1102个赞
知道小有建树答主
回答量:592
采纳率:100%
帮助的人:542万
展开全部
1.for循环:主要是用于循环次数确定的循环.还可以用于循环输出数组里的每个元素
2.iterator迭代主要用于循环输出一个集合中的每个元素.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式