Spliterator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Override
public Spliterator<E> spliterator() {
return new ArrayListSpliterator(0, -1, 0);
}

Index-based split-by-two, lazily initialized Spliterator
final class ArrayListSpliterator implements Spliterator<E> {
private int index; // current index, modified on advance/split
private int fence; // -1 until used; then one past last index
private int expectedModCount; // initialized when fence set

Creates new spliterator covering the given range.
ArrayListSpliterator(int origin, int fence, int expectedModCount) {
this.index = origin;
this.fence = fence;
this.expectedModCount = expectedModCount;
}