迭代器作用于遍历集合
AraayList迭代器的实现原理
class ArrayList<E>{
//成员变量
private int size;//记录元素个数
private Object[] elementData;//集合底层用来保存元素的数组
//成员 内部类
private class Itr implements Iterator<E>{
//成员内部类的成员方法
int cursor; // index of next element to return
int lastRet = -1; // index of last element returned; -1 if no such
int expectedModCount = modCount;
Itr() {}
//判断是否有元素
public boolean hasNext() {
//成员内部类变量和外部成员变量进行比较
return cursor != size;
}
@SuppressWarnings("unchecked")
//获取下一个元素
public E next() {
checkForComodification();
//把成员内部类成员变量赋给i
int i = cursor;
//在于Size进行比较
if (i >= size)
throw new NoSuchElementException();
//ArrayList.this.elementData :如果成员内部类的成员方法和外部类成员方法同名
// 外部类.this.外部类成员方法(访问外部类的成员方法)
Object[] elementData = ArrayList.this.elementData;//赋给外部成员变elelmentdata数组
if (i >= elementData.length)
throw new ConcurrentModificationException();
//给i+1赋给cursor
cursor = i + 1;
return (E) elementData[lastRet = i];//相当于返回给数组的索引值加1