一、迭代器模式介绍
迭代器模式(Iterator Design Pattern)属于行为型模式,用于遍历容器中的属性对象。
加上迭代器,遍历元素的方式一共有三种,如下代码:![[设计模式]-[行为型]-迭代器-介绍及应用 - 图1](/uploads/projects/it-learn@java-base/e2812889f4c3f90f7c8001ef095e73a0.webp)
分别是:计数器遍历,迭代器遍历和foreach遍历。
迭代器是其中一种遍历方式(foreach 底层也是迭代器)
二、迭代模式模板
2.1、接口定义
2.1.1、迭代器接口
定义迭代器接口 Iterator<E>,代码如下:![[设计模式]-[行为型]-迭代器-介绍及应用 - 图2](/uploads/projects/it-learn@java-base/34c7a9c606177f9b447dae922ff056dc.webp)
2.1.2、标识容器接口具有迭代器功能接口定义
定义接口 Iterable<E> 用以标识容器接口具有迭代器功能,并定义接口用以返回迭代器实现,代码定义如下:![[设计模式]-[行为型]-迭代器-介绍及应用 - 图3](/uploads/projects/it-learn@java-base/33759fa582728c0db42f0f9fa0c79bca.webp)
2.1.3、集合 List 接口定义
定义集合接口 List<E> ,同时继承 Iterable<E> 接口,表示集合具有可迭代能力。
代码实现如下:
2.2、迭代器实现 ArrayListIterator
实现迭代器接口 Iterator,实现 ArrayList 集合实现的专属迭代器 ArrayListIterator ,代码实现如下:![[设计模式]-[行为型]-迭代器-介绍及应用 - 图5](/uploads/projects/it-learn@java-base/3652215cfe224ed57990577617fab3ea.webp)
如上述代码所示,迭代器进行迭代,本身就是计数器迭代。
2.3、容器实现 ArrayList
实现 List<E> 接口,实现容器实现 ArrayList ,代码如下:![[设计模式]-[行为型]-迭代器-介绍及应用 - 图6](/uploads/projects/it-learn@java-base/a9d0fab244b2104722c59c9a4226a057.webp)
代码重点:
Object[] elementData:真实数据存储位置iterator():获取迭代器的方法定义add():添加元素
2.4、使用案例
ArrayList在初始化数据后,数据会存储在数组中,迭代器的遍历,就是通过遍历数组实现的。
【公众号】花好夜猿
