美文网首页
迭代器模式

迭代器模式

作者: 沐兮_d64c | 来源:发表于2019-07-08 15:55 被阅读0次

    1,Iterable与Iterator

    1)迭代器模式:用于遍历集合类的标准访问方法。主要目的是把逻辑访问从不同的集合类中抽象出来,避免暴露集合的内部机构。
    ArrayList和LinkedList:抽离出来的逻辑访问可以使一样的,将集合本身和集合访问分离。
    原理:遍历集合的游标和内部状态(当前游标位置、是否有下一个)都由Iterator迭代器维护。
    2)Iterable和Iterator接口定义
    Iterable:定义默认的iterator()方法,返回一个Iterator迭代器对象
    Iterator:定义了遍历集合和移除集合元素的操作。

    image.png
    image.png
    3)iterator()方法的实现
    ArrayList的iterator方法,返回内部类Itr迭代器对象
    image.png
    LinkedList的iterator方法,返回内部类ListItr迭代器对象
    image.png
    4)集合类实现Iterable,使用内部类实现Iterator的原因
    集合类直接实现Iterator,则集合本身需要维护一个游标。(作为参数传递时,会导致遍历不可预期)
    实现Iterable接口,每次调用iterator()方法都重新new一个新的迭代器。

    2,JDK迭代器模式的实现

    1)ArrayList类的结构图

    image.png
    2)ArrayList内部类Itr实现迭代器
    image.png
    image.png
    3)LinkedList类的结构图
    image.png
    4)LinkedList的ListItr内部类实现迭代器
    ListItr构造器根据参数可以定位next和nextIndex的位置。
    image.png
    5)Linkedlist的DescendingIterator内部类实现迭代器
    image.png

    相关文章

      网友评论

          本文标题:迭代器模式

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