package com.annimon.stream.operator; import com.annimon.stream.function.BiFunction; import com.annimon.stream.iterator.LsaExtIterator; import java.util.Iterator; public class ObjScan<T> extends LsaExtIterator<T> { private final Iterator<? extends T> iterator; private final BiFunction<T, T, T> accumulator; public ObjScan(Iterator<? extends T> iterator, BiFunction<T, T, T> accumulator) { this.iterator = iterator; this.accumulator = accumulator; } @Override protected void nextIteration() { hasNext = iterator.hasNext(); if (hasNext) { final T value = iterator.next(); if (isInit) { next = accumulator.apply(next, value); } else { next = value; } } } }