迭代器模式(Iterator)
定义
顺序访问集合对象的元素,不需要知道集合内部的实现,Collection集合中的迭代器就是基于迭代器模式实现
优点
- 可以有多个遍历方式
- 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。
缺点
增加迭代器类会增加代码量
实现
定义一个迭代器,有hasNext方法和next方法
public interface Iterator <E>{
public boolean hasNext();
public E next();
}
定义集合,集合中有迭代器
public interface Container {
public Iterator getIterator();
}
实现集合,同时实现迭代器
public class MyList implements Container{
String [] names= {"zhangsan","lisi","wangwu","zhaoliu"};
@Override
public Iterator getIterator() {
return new MyIterator();
}
private class MyIterator implements Iterator<String>{
int index=0;
@Override
public boolean hasNext() {
if(index<names.length) {
return true;
}
return false;
}
@Override
public String next() {
if(hasNext()){
return names[index++];
}
return null;
}
}
}
创建迭代器遍历集合
public class Main {
public static void main(String[] args) {
MyList myList = new MyList();
Iterator iterator = myList.getIterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
运行结果: