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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 等你的季节-夏天 中级黑马   /  2015-7-4 11:35  /  299 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Iterator :

迭代器: 获取出集合中存储对象的方式,简称,迭代,遍历
  Collection接口中,定义了一个方法 iterator() 既然接口中定义了方法,下面所有的小弟都有这个方法
  List Set ArrayList LinkedList Vector HashSet TreeSet

  方法含义: iterator() 获取迭代器对象 返回值类型  Iterator iterator()
   Iterator 是一个接口,iterator方法返回了一个接口的类型,方法返回的肯定是接口的实现类的对象

   Iterator接口中的方法 只有三个方法
      boolean hasNext() 判断集合中有没有下一个元素,如果有返回true
      Object  next()    获取集合中的下一个元素
      void    remove()  移除集合中的元素

Iterator iterator() 返回的是 迭代器接口Iterator的实现类的对象? 实现类是谁
但是这个实现类,实现了Iterator接口,重写了 三个方法

由于集合每个子类本身的特点不同,存储元素的方式不同,获取方式也就随之不同
因此规定一个接口,不管获取的方式是什么,必须满足接口中的三个方法
将Iterator接口的实现类,定义在了集合的内部类,内部类实现了Iterator接口,重写了三个抽象方法

interface Iterator{
    boolean hasNext();
    Object next();
    void remove();
}
   Iterator it = new ArrayList().iterator();
public class ArrayList extends AbstractList implements List{
         //Collection中定义了方法iterator() 实现类ArrayList必须重写这个方法
         public Iterator iterator(){
            return new Itr();
         }
         
         //定义了一个内部类,实现了Iterator接口
         private class Itr implements Iterator{
            public  boolean hasNext(){ return false;}
        public  Object next(){return null;}
        public  void remove(){}
         }
}


注意事项:
   没有元素了,不能继续next
   迭代中不要使用集合方法修改长度,否则出现并发修改异常
   一次迭代中不允许多次next

1 个回复

倒序浏览
刚学习完迭代器,复习复习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马