黑马程序员技术交流社区

标题: 集合问题 [打印本页]

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

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

首先迭代器与高级for都可以查看集合里面的内容高级for:比较常用,写法上也简单,可以遍历集合还有数组,但是不能对容器里面的内容作出修改,(其实高级for底层的结构也是迭代器)
而迭代器有Iterator与ListIterator,可以遍历集合里面的内容
并且ListIterator可以对集合里面的内容作出修改.
总结:如果只是想查看容器里的内容用高级for就好,如果是想对集合里面的内容做修改就要用Listerator进行迭代.

作者: 樱花飘过    时间: 2015-8-19 12:10
超级for循环的底层是迭代器




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2