“ 不管在哪种语言中,集合框架下面都有迭代器的使用,一般不需要我们自己去实现。这种迭代器其实就是一种叫迭代器的设计模式。今天我们也实现一个简单的迭代器设计模式,类似的实现在JDK源码中很常见。”
迭代器设计模式是一种行为型设计模式。它主要是提供一种方法能够顺序的访问集合对象内的各个元素而又不暴露集合对象的内部表示。
01
—
定义迭代器接口
首先,我们定义迭代器的接口类,支持泛型编程。其提供了两个方法,其中next函数返回当前元素对象。hasNext函数用于判断是否还有后续元素。
然后,我们来看看其实现类IteratorImpl。
02
—
自定义_List实现
首先模仿List,来定义_List的接口如下:
其中多了个方法,即返回迭代器的方法。
接下来看一下我们自己写的实现类,如下:
最后,我们来写一个测试类。首先我们定义一个用户类User。
然后我们使用自己实现的_List类来存储User对象。
输出结果:
注意:使用迭代器后,如果删除或者修改了原来的内容,需要重新获取迭代器。这个在JDK源码里面的Iterator实现时加入了异常机制(即:next方法里面的checkForComodification方法)。