1. ArrayList类引入
ArrayList类,当我们在使用它的时候,并没有将它的数据结构(数组)暴露给用户,因为如果暴露了可能会遭到修改,我们将它的内容迭代遍历给用户;
定义 : 提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。
2. 实现
由于Java已经天然支持了迭代器模式,所以其实实现很简单,自定义一个类,集成迭代器Iterable<T>
接口,然后重构他的Iterator<T> iterator()
方法即可;
具体案列代码实现:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class A implements Iterable<String> {
private final List<String> students = new ArrayList<>();
public A() {
students.add("1");
students.add("2");
students.add("3");
}
public boolean addString(String s){
return students.add(s);
}
public boolean removeString(String s){
return students.remove(s);
}
@Override
public Iterator<String> iterator() {
return new Itr();
}
private class Itr implements Iterator<String> {
int index = 0;
@Override
public boolean hasNext() {
if (index < students.size()) {
return true;
}
return false;
}
@Override
public String next() {
String s = students.get(index);
index++;
return s;
}
}
}
测试:
import java.util.Iterator;
public class TestA {
public static void main(String[] args) {
A a= new A();
System.out.println("--------------开始--------------");
Iterator<String> iterator= a.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}