黑马程序员技术交流社区

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

作者: 等你的季节-夏天    时间: 2015-7-4 11:35
标题: 迭代器
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


作者: 357955778    时间: 2015-7-4 13:49
刚学习完迭代器,复习复习!




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