用iterators遍历有什么好处

ECNU_SEI_kingsang 2005-07-22 05:50:58
先看这个程序
package mycode;

import java.util.*;

class Person {
private String name;
public Person(String n) {
this.name = n;
}
public String getName() {
return this.name;
}
}

public class WhatIsIterator {
public static void main(String[] args) {
ArrayList a = new ArrayList();
Iterator it;
a.add(new Person("one"));
a.add(new Person("two"));
a.add(new Person("three"));
a.add(new Person("four"));
it = a.iterator();
/*==========================test================================*/
System.out.println("=========use for loop=====================");
for(int i = 0; i < a.size(); i++)
System.out.println(((Person)a.get(i)).getName());
System.out.println("=========use iterator======================");
while(it.hasNext())
System.out.println(((Person)it.next()).getName());
}
}

/*the output is:
=========use for loop=====================
one
two
three
four
=========use iterator======================
one
two
three
four

*/
为了问题的纯粹,写了个很简单的程序,但在实际开发中应该用FOR还是ITERATORS,哪个更好呢,为什么
...全文
459 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
slh002 2005-07-24
  • 打赏
  • 举报
回复
raykings 2005-07-24
  • 打赏
  • 举报
回复
????用for你岂不是要知道那个ArrayList里面有多少个对象,用iterator不就可以不用知道了?
当然如果你系统要优化的化,而且你能肯定ArrayList有多少个对象的话,用for速度可以快些,嘎嘎
ECNU_SEI_kingsang 2005-07-23
  • 打赏
  • 举报
回复
我没JAVA与设计模式,能否介绍一下书上关于跌代的东西
hcom 2005-07-23
  • 打赏
  • 举报
回复
up
shuiwuya 2005-07-23
  • 打赏
  • 举报
回复
可以去看JAVA与设计模式 这本书
里面有个迭代子模式。。。
dongfei 2005-07-23
  • 打赏
  • 举报
回复
学习
xiaohuasz 2005-07-23
  • 打赏
  • 举报
回复
迭代,反复重复的意思,这里指循环遍历集合中元素。Iterator只能单向遍历元素,而另外还有ListIterator接口支持双向遍历元素。
ECNU_SEI_kingsang 2005-07-23
  • 打赏
  • 举报
回复
to xiaohuasz:能否具体解释下"迭代"是什么意思??最好写个程序演示下
glorywine 2005-07-22
  • 打赏
  • 举报
回复
学习!
xiaohuasz 2005-07-22
  • 打赏
  • 举报
回复
Iterator 集合框架中的接口,主要用于迭代集合中的元素,而对于像LinkedList,如果你用For循环,则LinkedList的get()方法效率是非常低的,因为它每次访问一个元素都要从头开始。而对于Iterator来说,它就像你用吸管从饮料瓶吸饮料一样,每吸一口就消耗掉一点,它的迭代效率很高。
interhanchi 2005-07-22
  • 打赏
  • 举报
回复
iterator的特点是:将遍历一个序列的操作与此序列底层结构香分离.
Iterator隐藏了容器底层的结构.
迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构.而且创建它的代价小.
import java.util.*;
public class Printer{
static void printAll(Iterator e){
while(e.hasNext())
System.out.println(e.next());
}
}
这个程序中,没有关于序列类型的信息,只有一个迭代器Iterator.不需要知道要遍历的是ArrayList还是LinkedList.
believefym 2005-07-22
  • 打赏
  • 举报
回复
用iterator主要是方便
shaplong9000 2005-07-22
  • 打赏
  • 举报
回复
我觉得是用iterator更方便一些,如果你在循环中大量使用类似与(Person)a的话,势必会造成效率的降低。

62,610

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧