定义
迭代器模式为我们提供了一种机制来按顺序访问集合的元素,而不需要知道集合内部的构造
代码实现
将迭代器接口化,待集合实现
public interface Iterator<E> {
boolean hasNext();
E next();
}
集合接口中定义一个迭代器
public interface MyList<E> {
Iterator<E> iterator();
}
为了简化代码,我们在集合中定义了一个数组用来存储数据,遍历的时候就直接从这个数组中取数据,同时我们需要实现自己的迭代器,以便客户端迭代集合元素
public class MyArrayList<E> implements MyList<E> {
private final Object[] data = {"张三", "里斯", "王五"};
@Override
public Iterator<E> iterator() {
return new MyItr();
}
private class MyItr implements Iterator<E> {
int index;
@Override
public boolean hasNext() {
return index < data.length;
}
@SuppressWarnings("unchecked")
@Override
public E next() {
return (E) data[index++];
}
}
}
客户端,对集合数据进行迭代
public class Client {
public static void main(String[] args) {
MyList<String> list = new MyArrayList<>();
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
以上就是迭代器模式的所有内容,我将持续更新设计模式,欢迎大家一起交流😁