分享

迭代器的原理及源码解析

 樱花梦_张艺馨 2016-11-23
迭代器为什么不定义成一个类,而是一个接口?
    假设迭代器定义的是一个类,这样我们就可以创建该类的对象,调用该类的方法来实现集合的遍历。但是,java中提供了很多集合类,而这些集合类的数据结构是不同的,所以,存储的方式和遍历的方式应该是不用的,进而他们的遍历方式也应该不是一样的,最终,就没有定义迭代器类的。
而无论你是那种集合,你都应该具备获取元素的操作,并且最好在辅助于判断功能,这样在获取前,先判断,这样就更不容易出错,也就是说,判断功能和获取功能应该是一个集合遍历所具备的,而每种集合的方式又不太一样,所以我们就把这两个功能提取出来,并不提供具体实现,这种方式就是接口。
那么,真正的具体的实现类在哪里呢?
 在真正的具体的子类中,以内部类的方式体现的。
====================代码实现==================
public interface Iterator{
 public abstract boolean hasNext();
 public abstract next();
}
public interface Iterable{
 Iterator iterator();
}
public interface Collection extends Iterable{
 Iterator iterator();
}
public interface List extends Collection {
 Iterator iterator();
}
public class ArrayList implements List{
 public Iterator iterator() {
        return new Itr();
    }
    private class Itr implements Iterator {
      public boolean hasNext() {}
       public Object next() {}
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多