黑马程序员技术交流社区

标题: JAVA迭代器详解 [打印本页]

作者: 血马雄风    时间: 2015-8-23 09:24
标题: JAVA迭代器详解
            JAVA迭代器详解
1、Interable、Iterator和ListIterator
   1)迭代器生成接口Interable,用于生成一个具体迭代器
      public interface Iterable<T>{
           Interator<T> iterator();
       }
   2)迭代器接口Iterator,用于遍历集合和移除元素,只能向前移动
      public interface Iterator<T>{
          boolean hasNext();     //判断下一个元素是否存在
          T next();              //返回下一个元素
          void remove();         //移除元素
      }
   3)表迭代器ListIterator
    (1)继承了Iterator
    (2)可以双向移动
    (3)只能用于各种List类的访问
    (4)可获取当前元素的前后元素的索引
2、Collection的子类(接口)除了List外,都实现了Interable接口,但List的抽象子类AbstractList实现了Interable接口。
3、Collection的子类(接口)都没有实现Iterator接口。但是,Collection的子类重写Interable接口的iterator()方法时,使用匿名内部类的方式实现Iterator接口。例如:
     public Interator<T> integrator(){
         return new Iterator<T>(){
             private int index = 0;
             public boolean hasNext(){ return indext < size;}  //size为集合元素的个数
             public T next(){ return array[index++];}  // array是存放元素的数组
             public void remove(){}   //不使用,就不需要实现
         }
     }
4、JAVA使用迭代器表示容器间的共性,而不是使用Collection。
5、Map及其子类没有实现Interable、Iterator
       但是,Map内部生成Collection,从而间接实现Iterable接口和生成Iterator,所以,Map也可以使用迭代器。
6、foreach与迭代器
  (1)foreach可用于数组和Collecton的所有对象
  (2)foreach可用来遍历集合的原因是:foreach用Iterable在序列中移动。因此,任何实现了Iterable类都可用foreach遍历。
  (3)foreach的java形式:for( :)





作者: 巧克黑力    时间: 2015-8-23 13:45
用习惯增强for。 迭代起忘记了就
作者: myself123    时间: 2015-8-23 14:04
学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2