迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
迭代器模式属于行为型模式。
意图
提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。
实现
实现如下
判断一个数组是否有下一个,然后遍历
- 创建接口
public interface Iterator{
boolean hasNext();
Object next();
}
public interface Container {
Iterator getIterator();
}
- 实现接口
public class ListContainer implements Container{
private List<Object> objects;
public ListContainer(List<Object> objects) {
this.objects = objects;
}
@Override
public Iterator getIterator() {
return new ListIterator();
}
class ListIterator implements Iterator{
int index;
@Override
public boolean hasNext() {
if (index < objects.size()){
return true;
}
return false;
}
@Override
public Object next() {
Object obj = null;
if (hasNext()){
obj = ListContainer.this.objects.get(index);
index++;
}
return obj;
}
}
}
- 使用
public void main(String... args) {
List<Object> lists = new ArrayList<>();
lists.add("A");
lists.add("V");
lists.add("S");
lists.add("F");
lists.add("G");
ListContainer container = new ListContainer(lists);
Iterator iterator = container.getIterator();
while (iterator.hasNext()){
System.out.println("name "+iterator.next());
}
}
- 结果
I/System.out: name A
I/System.out: name V
I/System.out: name S
I/System.out: name F
I/System.out: name G