iterator实现遍历源码解析
ArrayList arrayList=new ArrayList();
arrayList.add(1);
arrayList.add(“aaa”);
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
点击iterator查看源码,本文对健壮性的判断已删除
private class Itr implements Iterator {
int cursor; // 模拟指针初始值为0
int lastRet = -1; // 当前元素下标
// prevent creating a synthetic constructor
Itr() {}
//在此判断当前下标是否为数组最后一个元素
public boolean hasNext() {
return cursor != size;
}
@SuppressWarnings("unchecked")
public E next() {
int i = cursor;
//指向当前数组
Object[] elementData = ArrayList.this.elementData;
//当前指针下标加1
cursor = i + 1;
//输出当前下标元素
return (E) elementData[lastRet = i];
}
}
增强for循环的源码也是迭代器的原理。