模式概述:
让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。
使用场景:
1.当集合背后为复杂的数据结构, 且你希望对客户端隐藏其复杂性时 (出于使用便利性或安全性的考虑), 可以使用迭代器模式。
2. 使用该模式可以减少程序中重复的遍历代码。
3. 如果你希望代码能够遍历不同的甚至是无法预知的数据结构, 可以使用迭代器模式。
代码样例:
/**
* 迭代器接口
*/
public interface Iterator {
boolean hasNext();
Object next();
}
/**
* 迭代器实现类
*/
public class MyIterator implements Iterator{
int index;
Object[] array;
public MyIterator(Object[] array) {
this.index = 0;
this.array = array;
}
@Override
public boolean hasNext() {
if(index < array.length){
return true;
}else{
return false;
}
}
@Override
public Object next() {
Object o = array[index];
index++;
return o;
}
}
/**
* 容器接口
*/
public interface Collection {
void add (Object o);
Iterator iterator();
}
/**
* 自定义容器类
*/
public class Mylist implements Collection{
Object[] array = new Object[10];
int index = 0;
@Override
public void add(Object o) {
if(index<10){
array[index++] =o;
}
}
@Override
public Iterator iterator() {
return new MyIterator(array);
}
}
/**
* 测试迭代器
*/
public class TestIterator {
public static void main(String[] args) {
Collection list = new Mylist();
list.add(111);
list.add(222);
list.add(333);
Iterator iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
测试结果: