A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 血马雄风 中级黑马   /  2015-8-23 09:24  /  898 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

            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( :)




2 个回复

倒序浏览
用习惯增强for。 迭代起忘记了就
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马