java.util.stream.Streams Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of dragome-js-jre Show documentation
Show all versions of dragome-js-jre Show documentation
Dragome SDK module: js-jre
package java.util.stream;
import java.util.Comparator;
import java.util.Spliterator;
import java.util.function.IntConsumer;
final class Streams
{
private Streams()
{
throw new Error("no instances");
}
static final Object NONE= new Object();
static final class RangeIntSpliterator implements Spliterator.OfInt
{
private int from;
private final int upTo;
private int last;
RangeIntSpliterator(int from, int upTo, boolean closed)
{
this(from, upTo, closed ? 1 : 0);
}
private RangeIntSpliterator(int from, int upTo, int last)
{
this.from= from;
this.upTo= upTo;
this.last= last;
}
public boolean tryAdvance(IntConsumer consumer)
{
return false;
}
public void forEachRemaining(IntConsumer consumer)
{
}
public long estimateSize()
{
return ((long) upTo) - from + last;
}
public int characteristics()
{
return Spliterator.ORDERED | Spliterator.SIZED | Spliterator.SUBSIZED | Spliterator.IMMUTABLE | Spliterator.NONNULL | Spliterator.DISTINCT | Spliterator.SORTED;
}
public Comparator super Integer> getComparator()
{
return null;
}
public Spliterator.OfInt trySplit()
{
long size= estimateSize();
return size <= 1 ? null : new RangeIntSpliterator(from, from= from + splitPoint(size), 0);
}
private static final int BALANCED_SPLIT_THRESHOLD= 1 << 24;
private static final int RIGHT_BALANCED_SPLIT_RATIO= 1 << 3;
private int splitPoint(long size)
{
int d= (size < BALANCED_SPLIT_THRESHOLD) ? 2 : RIGHT_BALANCED_SPLIT_RATIO;
return (int) (size / d);
}
}
}