A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓬头小道士 中级黑马   /  2015-8-14 22:58  /  601 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

迭代器和高级for循环有什么区别?什么时候用?

10 个回复

倒序浏览
高级for循环底部其实就是迭代器原理,collection集合之所以能用高级for,就是实现了iterable接口,里面实现了iterator接口的方法,而collection底层是数组,所以各种应用类型的数组都可以用高级for遍历。
回复 使用道具 举报
感觉没啥区别,用法是一样的。就遍历的时候用。
回复 使用道具 举报
迭代器和高级for的区别:
首先迭代器是集合特有的遍历元素的方式,只能用于集合元素的遍历,不能用于其他地方;
而高级for是for循环的一种变形,出现于JDK1.5版本以后,它不仅可以用于简化集合的遍历方式,也可以用来遍历数组,它相对于其他for循环来说格式更简洁;
至于什么时候用,没有固定的规定,但为了代码的简洁可以在需要对集合或数组遍历的时候使用高级for循环,而实际上在使用高级for遍历集合的时候,编译器在编译的时候也是转换为了迭代器形式,如果需要验证可以用反编译工具看看用到高级for的语句反编译之后的代码
回复 使用道具 举报 1 0
高级for只能进行只读操作吧
回复 使用道具 举报
殷俊 发表于 2015-8-14 23:11
高级for循环底部其实就是迭代器原理,collection集合之所以能用高级for,就是实现了iterable接口,里面实现 ...

赞一个!
回复 使用道具 举报
高级for循环是用来取代迭代器的,从结构上看,它比迭代器更简便。高级for可以看成是一个简单版的迭代器,它们没什么区别,它们两个一般是遍历集合的时候用,后面迭代器完全被高级for取代
回复 使用道具 举报
qlmmys 中级黑马 2015-8-18 22:46:17
8#
高级for循环的底层就是迭代器,可以说是迭代器的简化版。
回复 使用道具 举报
for在遍历集合的时候,不能给集合增加元素,而listiterator迭代器可以
回复 使用道具 举报
本帖最后由 limaowei666666 于 2015-8-19 11:45 编辑

首先迭代器与高级for都可以查看集合里面的内容高级for:比较常用,写法上也简单,可以遍历集合还有数组,但是不能对容器里面的内容作出修改,(其实高级for底层的结构也是迭代器)
而迭代器有Iterator与ListIterator,可以遍历集合里面的内容
并且ListIterator可以对集合里面的内容作出修改.
总结:如果只是想查看容器里的内容用高级for就好,如果是想对集合里面的内容做修改就要用Listerator进行迭代.
回复 使用道具 举报
超级for循环的底层是迭代器
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马