com.annimon.stream.operator.LongScanIdentity Maven / Gradle / Ivy
package com.annimon.stream.operator;
import com.landawn.abacus.util.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);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy