com.annimon.stream.operator.LongScanIdentity Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of stream Show documentation
Show all versions of stream Show documentation
Stream API from Java 8 rewritten on iterators for Java 7 and below
package com.annimon.stream.operator;
import com.annimon.stream.function.LongBinaryOperator;
import com.annimon.stream.iterator.PrimitiveExtIterator;
import com.annimon.stream.iterator.PrimitiveIterator;
public class LongScanIdentity extends PrimitiveExtIterator.OfLong {
private final PrimitiveIterator.OfLong iterator;
private final long identity;
private final LongBinaryOperator accumulator;
public LongScanIdentity(PrimitiveIterator.OfLong iterator, long identity, LongBinaryOperator accumulator) {
this.iterator = iterator;
this.identity = identity;
this.accumulator = accumulator;
}
@Override
protected void nextIteration() {
if (!isInit) {
// Return identity
hasNext = true;
next = identity;
return;
}
hasNext = iterator.hasNext();
if (hasNext) {
final long current = iterator.next();
next = accumulator.applyAsLong(next, current);
}
}
}