黑马程序员技术交流社区
标题:
关于取出方式的问题。
[打印本页]
作者:
于海生
时间:
2011-12-31 12:06
标题:
关于取出方式的问题。
本帖最后由 于海生 于 2012-1-1 07:52 编辑
java中for循环和iterator迭代有什么区别?
作者:
郝锡强
时间:
2011-12-31 12:16
本帖最后由 郝锡强 于 2011-12-31 12:17 编辑
记录的存取方式有两种:一种是顺序存储,另一种是链接存储
对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)
则必须找到其前一个记录的位置才能够找到本记录。
所以for循环便于访问顺序存储的记录,比如数组等
而迭代则更适用于链接存储的记录,虽然Java中有些底层通过链接存储原理实现的集合
也可以通过下标获取指定的记录,但是其每次都必须从链表头开始查找记录,这样会影响查找的效率
http://zhidao.baidu.com/question/150123892.html
作者:
祁焱
时间:
2011-12-31 12:30
for循环一般用于遍历数组。
iterator用于遍历Collection集合,同时Collection集合也可以用增强的for循环进行遍历,
在遍历Collection时,增强for循环底层也是用的迭代器iterator的方法。
作者:
房宝彬
时间:
2011-12-31 17:55
iterator用于遍历Collection集合,同时Collection集合也可以用增强的for循环进行遍历,
作者:
林晓波
时间:
2011-12-31 18:59
for用于循环 底层以数组为数据结构的数据 例如ArrayList,数组
而iterator 用于循环 底层以链表为数据结构的数据 例如 HashSet, LinkedList
作者:
马新乐
时间:
2011-12-31 23:45
效率上的差别
采用ArrayList对随机访问比较快,而for循环中的get()方法,采用的即是随机访问的方法,因此在ArrayList里,for循环较快
采用LinkedList则是顺序访问比较快,iterator中的next()方法,采用的即是顺序访问的方法,因此在LinkedList里,使用iterator较快
使用 Iterator 的好处在于可以使用相同方式去遍历集合(List 是有序集合)中元素,而不用考虑集合类的内部实现(只要它实现了 java.lang.Iterable 接口),如果使用 Iterator 来遍历集合中元素,一旦不再使用 List 转而使用 TreeSet 来组织数据,那遍历元素的代码不用做任何修改,如果使用 for 来遍历,那所有遍历此集合的算法都得做相应调整。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2