Iterator接口中有三个方法hasNext(),next(),remove(),按照接口的规定实现它的类必须实现该接口的全部对象。那么ArrayList,LinkList,HashSet等都是实现了该Iterator接口,怎么不用实现该三个方法呢,取而代之的是iterator()方法,遍历是通过她的返回对象条用hasNext(),next(),remove()。究竟是为什么呢!!

解决方案 »

  1.   

    下面僅屬於個人意見iterator相當於一個指針,它可以進行前進,刪除當前結點.如果ArrayList有這些方法的話,會感覺很怪,ArrayList.next()要返回什麼啊
      

  2.   

    你仔细看看
    java.lang.Object
      extended by java.util.AbstractCollection<E>
          extended by java.util.AbstractList<E>
              extended by java.util.ArrayList<E>
    ArrrayList继承了AbstractCollection
    而AbstractCollection则实现了Iterator接口
    java.lang.Object
      extended by java.util.AbstractCollection<E>
          extended by java.util.AbstractSet<E>
              extended by java.util.HashSet<E>
    java.lang.Object
      extended by java.util.AbstractCollection<E>
          extended by java.util.AbstractList<E>
              extended by java.util.AbstractSequentialList<E>
                  extended by java.util.LinkedList<E>也是一样
      

  3.   

    楼上的:ArrrayList继承了AbstractCollection
    而AbstractCollection则实现了Iterator接口 
    说明了你的疑惑。 
      

  4.   

    如果 List 实现了 Iterator;
    hasNext() 遍历一遍之后就不能遍历了。
    但是如果用一个方法返回一个对象来遍历,那么遍历完之后就可以舍弃这个对象。重新生成一个对象进行遍历。