Java中for与Iterator的比较

本文深入探讨了Java中for循环和迭代器在遍历顺序存储与链接存储集合时的不同使用场景及效率差异,强调了它们在数组、ArrayList、HashSet、LinkedList等集合操作中的应用,并在JDK1.5中对于迭代器语法的优化进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般来讲,记录的存储方式有两种:一种是顺序存储,另一种是链接存储。对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)则必须找到其前一个记录的位置才能够找到本记录。所以for循环便于访问顺序存储的记录,比如数组等,而迭代器则更适用于链接存储的记录,虽然Java中有些底层通过链接存储原理实现的集合也可以通过下标获取指定的记录,但是其每次都必须从链表头开始查找记录,这样会影响查找的效率。

所以,for适用于循环底层以数组为数据结构的数据,例如ArrayList,数组;而iterator 用于循环底层以链表为数据结构的数据,例如 HashSet, LinkedList;

另外,iterator对于集合才能用,而for只要是循环都可用(集合、数组)。从对集合操作方面比较,for(Object item:list)等于for (Iterator iterator )。
for(Iterator it = c.iterator(); it.hasNext(); ) {Object o = it.next(); // 对o的操作...} 在JDK1.5中,还对上面的代码在语法上作了简化:
for(Type t : c) {// 对t的操作...}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值