对于java的集合容器ArrayList我们都有过输出其数据元素的经历,我们写一个for循环然后遍历输出。然后这样做有一个缺点,那就是我们需要了解ArrayList容器内部的数据结构,比如说里面可能保存的是String或者是Int。现在有一个设计模式叫做迭代器模式,让用户通过特定的接口访问容器的数据,不需要了解容器内部的数据结构。
一、认识迭代器模式
概念:迭代子模式可以顺序的访问集合内部的元素而不必知道集合内部表象。
可能我们会问,集合里面有迭代接口Iterator,为什么还要自己再去设计一个迭代器呢?这不是多此一举嘛。
为此我们先来看看使用迭代器有什么坏处吧。先看下面一段代码:
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//添加元素
for (int i = 0; i < 5; i++) {
list.add("index"+i);
}
Iterator<String> it = list.iterator();//获取迭代器
//遍历元素
while(it.hasNext()) {
if(it.next().equals("index3")) {
list.remove(it.next());
}
}
}
}