先看这个程序
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,哪个更好呢,为什么

解决方案 »

  1.   

    我觉得是用iterator更方便一些,如果你在循环中大量使用类似与(Person)a的话,势必会造成效率的降低。
      

  2.   

    iterator的特点是:将遍历一个序列的操作与此序列底层结构香分离.
     Iterator隐藏了容器底层的结构.
    迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构.而且创建它的代价小.
    import java.util.*;
    public class Printer{
    static void printAll(Iterator e){
    while(e.hasNext())
       System.out.println(e.next());
    }
    }
    这个程序中,没有关于序列类型的信息,只有一个迭代器Iterator.不需要知道要遍历的是ArrayList还是LinkedList.
      

  3.   

    Iterator 集合框架中的接口,主要用于迭代集合中的元素,而对于像LinkedList,如果你用For循环,则LinkedList的get()方法效率是非常低的,因为它每次访问一个元素都要从头开始。而对于Iterator来说,它就像你用吸管从饮料瓶吸饮料一样,每吸一口就消耗掉一点,它的迭代效率很高。
      

  4.   

    to  xiaohuasz:能否具体解释下"迭代"是什么意思??最好写个程序演示下
      

  5.   

    迭代,反复重复的意思,这里指循环遍历集合中元素。Iterator只能单向遍历元素,而另外还有ListIterator接口支持双向遍历元素。
      

  6.   

    可以去看JAVA与设计模式 这本书
    里面有个迭代子模式
      

  7.   

    我没JAVA与设计模式,能否介绍一下书上关于跌代的东西
      

  8.   

    ????用for你岂不是要知道那个ArrayList里面有多少个对象,用iterator不就可以不用知道了?
    当然如果你系统要优化的化,而且你能肯定ArrayList有多少个对象的话,用for速度可以快些,嘎嘎