牛骨文教育服务平台(让学习变的简单)
博文笔记

Java中for与Iterator的比较

创建时间:2012-12-18 投稿人: 浏览次数:3130
一般来讲,记录的存储方式有两种:一种是顺序存储,另一种是链接存储。对于顺序存储的记录可以根据其下标找到对应的记录,而链接存储(拿单链表为例)则必须找到其前一个记录的位置才能够找到本记录。所以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的操作...}

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。