美文网首页java web 学习资料Java基础
Java迭代器的原理及源码解析

Java迭代器的原理及源码解析

作者: Andy_1777 | 来源:发表于2016-12-27 21:20 被阅读1419次

    Java中提供了很多集合类,这些集合类的数据结构不一样,因此在存储和遍历时的方式不一样。迭代器抽象出集合类的共有功能,提取判断功能和获取功能,得到接口,这个接口就是迭代器接口。在具体子类中实现迭代器接口中的若干方法(使用内部类实现这若干个方法)。接下来分析迭代器的原理和源码。

    首先查看Collection接口的API。

    该接口有一个父接口Iterable,该接口中有一个方法:

    接口中的这个方法返回类型是Iterator类型的接口。继续查看Iterator接口。有三个方法。

    因此,此时的接口体系结构如下:

    在此我们可以发现,最终的子类ArrayList要实现最初的Iterable接口,即实现三个抽象方法(还有一个remove()方法)。我们接下来查看ArrayList类的源码:

    首先在Iterator()方法中返回了一个 new Itr(),说明返回了一个实现类的对象。上图蓝底标记处,就是这个实现类。在此,我们得出最后的体系结构:

    现在,我们可以理解,在

    Collection c = new ArrayList();

    Iterator it = c.iterator()

    这两行代码中,第二行代码的左边是接口,右边是具体类实例对象,再转到第一行,右边是ArrayList的实例,即运行时是ArrayList的实例,因此最终返回的就是ArrayList类中的内部类Itr的实例对象。

    以上就是Java迭代器的源码解析,看起来比较复杂,但是熟练地掌握了接口继承体系结果,内部类,多态(编译看左边,运行看右边)等基本知识,就可以理解迭代器这一机制的原理了。

    相关文章

      网友评论

      本文标题:Java迭代器的原理及源码解析

      本文链接:https://www.haomeiwen.com/subject/tkcevttx.html