Java 迭代

63 阅读1分钟

ArrayList迭代器

查看ArrayList源码

public class ArrayList extends .... {

    public Iterator<E> iterator() {
        return new ArrayList.Itr();
    }
    }
    

private class Itr implements Iterator { int cursor; int lastRet = -1; int expectedModCount;

    Itr() {
        this.expectedModCount = ArrayList.this.modCount;
    }

    public boolean hasNext() {
        return this.cursor != ArrayList.this.size;
    }

    public E next() {
        this.checkForComodification();
        int var1 = this.cursor;
        if (var1 >= ArrayList.this.size) {
            throw new NoSuchElementException();
        } else {
            Object[] var2 = ArrayList.this.elementData;
            if (var1 >= var2.length) {
                throw new ConcurrentModificationException();
            } else {
                this.cursor = var1 + 1;
                return var2[this.lastRet = var1];
            }
        }
    }

    public void remove() {}

}

public interface Iterator {

boolean hasNext();

E next();

default void remove() {
    throw new UnsupportedOperationException("remove");
}

default void forEachRemaining(Consumer<? super E> var1) {
    Objects.requireNonNull(var1);

    while(this.hasNext()) {
        var1.accept(this.next());
    }

}

}