Java 类java.util.PrimitiveIterator.OfInt 实例源码
项目:bifurcan
文件:IntIterators.java
/**
* @param it an iterator
* @param f a function which transforms values into iterators
* @return an iterator which yields the concatenation of the iterators
*/
public static <U> OfInt flatMap(Iterator<U> it, Function<U, OfInt> f) {
return new OfInt() {
OfInt curr = EMPTY;
private void prime() {
while (!curr.hasNext() && it.hasNext()) {
curr = f.apply(it.next());
}
}
@Override
public boolean hasNext() {
prime();
return curr.hasNext();
}
@Override
public int nextInt() {
prime();
return curr.nextInt();
}
};
}
项目:bifurcan
文件:IntIterators.java
/**
* @param min an inclusive start of the range
* @param max an exclusive end of the range
* @param f a function which transforms a number in the range into a value
* @return an iterator which yields the values returned by {@code f}
*/
public static OfInt range(long min, long max, LongToIntFunction f) {
return new OfInt() {
long i = min;
@Override
public boolean hasNext() {
return i < max;
}
@Override
public int nextInt() {
if (hasNext()) {
return f.applyAsInt(i++);
} else {
throw new NoSuchElementException();
}
}
};
}
项目:bifurcan
文件:UnicodeChunk.java
public static OfInt codePointIterator(byte[] chunk) {
return new OfInt() {
private int idx = 2;
@Override
public int nextInt() {
int codePoint = decode(chunk, idx);
idx += prefixLength(chunk[idx]);
return codePoint;
}
@Override
public boolean hasNext() {
return idx < chunk.length;
}
};
}
项目:bifurcan
文件:UnicodeChunk.java
public static OfInt reverseCodePointIterator(byte[] chunk) {
return new OfInt() {
int idx = chunk.length;
@Override
public int nextInt() {
while ((chunk[idx] & 0b11000000) == 0b10000000) {
idx--;
}
int codePoint = decode(chunk, idx);
idx--;
return codePoint;
}
@Override
public boolean hasNext() {
return idx > 2;
}
};
}
项目:streamex
文件:IntStreamEx.java
private <A> A collectSized(Supplier<A> supplier, ObjIntConsumer<A> accumulator, BiConsumer<A, A> combiner,
IntFunction<A> sizedSupplier, ObjIntConsumer<A> sizedAccumulator) {
if (isParallel())
return collect(supplier, accumulator, combiner);
java.util.Spliterator.OfInt spliterator = spliterator();
long size = spliterator.getExactSizeIfKnown();
A intermediate;
if (size >= 0 && size <= Integer.MAX_VALUE) {
intermediate = sizedSupplier.apply((int) size);
spliterator.forEachRemaining((IntConsumer) i -> sizedAccumulator.accept(intermediate, i));
} else {
intermediate = supplier.get();
spliterator.forEachRemaining((IntConsumer) i -> accumulator.accept(intermediate, i));
}
return intermediate;
}
项目:jenetics
文件:RandomIndexStreamTest.java
@Test
public void compatibility() {
final TestData data = TestData.of("/io/jenetics/util/IndexStream.Random");
for (String[] line : data) {
final Random random = new Random(0);
final double p = Double.parseDouble(line[0]);
final OfInt it = indexes(random, 500, p).iterator();
for (int i = 1; i < line.length; ++i) {
final int index = Integer.parseInt(line[i]);
Assert.assertEquals(it.nextInt(), index);
}
Assert.assertFalse(it.hasNext());
}
}
项目:jenetics
文件:RandomIndexStreamTest.java
@Test
public void reference() {
final int size = 5000;
final double p = 0.5;
final Random random1 = new Random(0);
final Random random2 = new Random(0);
for (int j = 0; j < 1; ++j) {
final OfInt it = indexes(random1, size, p).iterator();
final IndexStream stream2 = ReferenceRandomStream(
size, p, random2
);
while (it.hasNext()) {
Assert.assertEquals(it.nextInt(), stream2.next());
}
Assert.assertFalse(it.hasNext());
Assert.assertEquals(stream2.next(), -1);
}
}
项目:bifurcan
文件:IntIterators.java
public static boolean equals(OfInt a, OfInt b) {
while (a.hasNext()) {
if (a.nextInt() != b.nextInt()) {
return false;
}
}
return true;
}
项目:bifurcan
文件:IntIterators.java
/**
* @param it an iterator
* @param f a predicate
* @return an iterator which only yields values that satisfy the predicate
*/
public static OfInt filter(OfInt it, IntPredicate f) {
return new OfInt() {
private int next = 0;
private boolean primed = false;
private boolean done = false;
private void prime() {
if (!primed && !done) {
while (it.hasNext()) {
next = it.nextInt();
if (f.test(next)) {
primed = true;
return;
}
}
done = true;
}
}
@Override
public boolean hasNext() {
prime();
return !done;
}
@Override
public int nextInt() {
prime();
if (!primed) {
throw new NoSuchElementException();
}
primed = false;
return next;
}
};
}
项目:bifurcan
文件:IntIterators.java
/**
* @param it an iterator
* @param f a function which transforms values
* @return an iterator which yields the transformed values
*/
public static OfInt map(OfInt it, IntUnaryOperator f) {
return new OfInt() {
@Override
public boolean hasNext() {
return it.hasNext();
}
@Override
public int nextInt() {
return f.applyAsInt(it.nextInt());
}
};
}
项目:bifurcan
文件:UnicodeChunk.java
public static OfInt codeUnitIterator(byte[] chunk) {
return new OfInt() {
OfInt it = codePointIterator(chunk);
short low = -1;
@Override
public int nextInt() {
if (low == -1) {
int codePoint = it.nextInt();
if (codePoint < 0x10000) {
return codePoint;
} else {
low = (short) Character.lowSurrogate(codePoint);
return Character.highSurrogate(codePoint);
}
} else {
int val = low;
low = -1;
return val;
}
}
@Override
public boolean hasNext() {
return low != -1 || it.hasNext();
}
};
}
项目:bifurcan
文件:UnicodeChunk.java
public static OfInt reverseCodeUnitIterator(byte[] chunk) {
return new OfInt() {
OfInt it = codePointIterator(chunk);
short high = -1;
@Override
public int nextInt() {
if (high == -1) {
int codePoint = it.nextInt();
if (codePoint < 0x10000) {
return codePoint;
} else {
high = (short) Character.highSurrogate(codePoint);
return Character.lowSurrogate(codePoint);
}
} else {
int val = high;
high = -1;
return val;
}
}
@Override
public boolean hasNext() {
return high != -1 || it.hasNext();
}
};
}
项目:lambda-peg-parser
文件:Parser.java
/**
* Helper method matching a string. Returns false if the string could not be
* found.
*/
private boolean matchString(String expected) {
OfInt it = expected.codePoints().iterator();
while (it.hasNext() && ctx.hasNext()) {
if (it.nextInt() != ctx.peek()) {
return false;
}
ctx.next();
}
return !it.hasNext();
}
项目:streamex
文件:IntStreamExTest.java
@Test
public void testDropWhile() {
assertArrayEquals(new int[] { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, IntStreamEx.range(100).dropWhile(
i -> i % 10 < 5).limit(10).toArray());
assertEquals(100, IntStreamEx.range(100).dropWhile(i -> i % 10 < 0).count());
assertEquals(0, IntStreamEx.range(100).dropWhile(i -> i % 10 < 10).count());
assertEquals(OptionalInt.of(0), IntStreamEx.range(100).dropWhile(i -> i % 10 < 0).findFirst());
assertEquals(OptionalInt.empty(), IntStreamEx.range(100).dropWhile(i -> i % 10 < 10).findFirst());
java.util.Spliterator.OfInt spltr = IntStreamEx.range(100).dropWhile(i -> i % 10 < 1).spliterator();
assertTrue(spltr.tryAdvance((int x) -> assertEquals(1, x)));
Builder builder = IntStream.builder();
spltr.forEachRemaining(builder);
assertArrayEquals(IntStreamEx.range(2, 100).toArray(), builder.build().toArray());
}
项目:lambda-peg-parser
文件:Parser.java
/**
* Helper method matching a string. Returns false if the string could not be
* found.
*/
private boolean matchString(String expected) {
OfInt it = expected.codePoints().iterator();
while (it.hasNext() && ctx.hasNext()) {
if (it.nextInt() != ctx.peek()) {
return false;
}
ctx.next();
}
return !it.hasNext();
}
项目:ev-oss
文件:WontonSerial.java
private void appendString(final String string) throws IOException {
writer.write('"');
OfInt iter = string.codePoints().iterator();
while (iter.hasNext()) {
appendEncode(iter.nextInt());
}
writer.write('"');
}
项目:bifurcan
文件:IntIterators.java
public static IntStream toStream(OfInt it, long estimatedSize) {
return StreamSupport.intStream(Spliterators.spliterator(it, estimatedSize, Spliterator.ORDERED), false);
}
项目:OpenChatAlytics
文件:EmojiCounterBolt.java
@VisibleForTesting
protected List<EmojiEntity> getEmojisFromMessage(FatMessage fatMessage) {
String message = fatMessage.getMessage().getMessage();
if (message == null) {
return ImmutableList.of();
}
Map<String, EmojiEntity> emojis = Maps.newHashMap();
OfInt charIterator = message.chars().iterator();
Room room = fatMessage.getRoom();
String roomName = null;
if (room != null) {
roomName = room.getName();
}
boolean capturingEmoji = false;
StringBuilder emojiStrBuilder = new StringBuilder();
while (charIterator.hasNext()) {
int asciiValue = charIterator.next();
char ch = (char) asciiValue;
if (ch == ':') {
// done capturing
if (capturingEmoji) {
// There's another : right after so continue capturing from there but skip this
if (emojiStrBuilder.length() <= 0) {
emojiStrBuilder = new StringBuilder();
continue;
}
String emoji = emojiStrBuilder.toString();
EmojiEntity existingEmoji = emojis.remove(emoji);
int occurrences;
if (existingEmoji == null) {
occurrences = 1;
} else {
occurrences = existingEmoji.getOccurrences() + 1;
}
emojis.put(emoji, new EmojiEntity(fatMessage.getUser().getMentionName(),
roomName,
fatMessage.getMessage().getDate(),
emoji,
occurrences,
fatMessage.getUser().isBot()));
emojiStrBuilder = new StringBuilder();
}
capturingEmoji = !capturingEmoji;
continue;
}
if (capturingEmoji) {
if (BLACKLISTED_CHARS.contains(ch)) {
capturingEmoji = !capturingEmoji;
emojiStrBuilder = new StringBuilder();
continue;
}
emojiStrBuilder.append(ch);
}
}
LOG.debug("Extracted {} emojis", emojis.size());
return Lists.newArrayList(emojis.values());
}
项目:NoSQLDataEngineering
文件:NoSQLModelBuilder.java
public NoSQLSchema build(Map<String, List<SchemaComponent>> rawEntities)
{
// TODO: Identify objects that are references in the form of MongoDB
// references: https://docs.mongodb.org/manual/reference/database-references/#dbrefs
// { "$ref" : <type>, "$id" : <value>, "$db" : <value> }
// Build reverse indices & Create Entities & Populate with EntityVersions
rawEntities.forEach((entityName, schemas) -> {
// Entity creation
Entity e = factory.createEntity();
e.setName(entityName);
mEntities.add(e);
OfInt n = IntStream.iterate(1, i -> i+1).iterator();
schemas.forEach(schema -> {
EntityVersion theEV = factory.createEntityVersion();
theEV.setVersionId(n.next());
// Set the root flag. It is needed to know which
// entities can be destination of a reference
ObjectSC obj = (ObjectSC)schema;
theEV.setRoot(obj.isRoot);
e.getEntityversions().add(theEV);
mEntityVersions.put(schema, theEV);
});
});
// Consider as reference matcher only those Entities of which
// at least one version is root
rm = createReferenceMatcher();
// Populate empty EntityVersions
mEntityVersions.forEach((schema, ev) -> fillEV(schema, ev));
// Opposite references
mEntities.forEach(eFrom -> {
eFrom.getEntityversions().forEach(ev -> {
ev.getProperties().stream().filter(p -> p instanceof Reference).forEach(r -> {
Reference ref = (Reference)r;
Entity eTo = ref.getRefTo();
// Find a EntityVersion of eTo that has a reference to the
// current Entity eFrom
Optional<Property> refTo =
eTo.getEntityversions().stream().flatMap(evTo ->
evTo.getProperties().stream().filter(pTo -> pTo instanceof Reference))
.filter(rTo -> ((Reference)rTo).getRefTo() == eFrom).findFirst();
refTo.ifPresent(r_ -> ref.setOpposite((Reference)r_));
});
});
});
NoSQLSchema finalSchema = factory.createNoSQLSchema();
finalSchema.setName(name);
finalSchema.getEntities().addAll(mEntities);
return finalSchema;
}
项目:parallel-stream-support
文件:ParallelIntStreamSupport.java
@Override
public OfInt iterator() {
return this.delegate.iterator();
}
项目:parallel-stream-support
文件:ParallelIntStreamSupport.java
@Override
public java.util.Spliterator.OfInt spliterator() {
return this.delegate.spliterator();
}
项目:streamex
文件:IntStreamEx.java
IntStreamEx(Spliterator.OfInt spliterator, StreamContext context) {
super(spliterator, context);
}
项目:streamex
文件:IntStreamEx.java
final IntStreamEx delegate(Spliterator.OfInt spliterator) {
return new IntStreamEx(spliterator, context);
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns an {@code InputStream} lazily populated from the current
* {@code IntStreamEx}.
*
* <p>
* Note that only the least-significant byte of every number encountered in
* this stream is preserved in the resulting {@code InputStream}, other
* bytes are silently lost. Thus it's a caller responsibility to check
* whether this may cause problems.
*
* <p>
* This is a terminal operation.
*
* <p>
* When the resulting {@code InputStream} is closed, this
* {@code IntStreamEx} is closed as well.
*
* @return a new {@code InputStream}.
* @see #of(InputStream)
* @since 0.6.1
*/
public InputStream asByteInputStream() {
Spliterator.OfInt spltr = spliterator();
return new InputStream() {
private int last;
@Override
public int read() {
return spltr.tryAdvance((int val) -> last = val) ? (last & 0xFF) : -1;
}
@Override
public void close() {
IntStreamEx.this.close();
}
};
}
项目:streamex
文件:IntStreamEx.java
@Override
public OfInt iterator() {
return Spliterators.iterator(spliterator());
}
项目:streamex
文件:IntStreamExTest.java
@Test
public void testBasics() {
assertFalse(IntStreamEx.of(1).isParallel());
assertTrue(IntStreamEx.of(1).parallel().isParallel());
assertFalse(IntStreamEx.of(1).parallel().sequential().isParallel());
AtomicInteger i = new AtomicInteger();
try (IntStreamEx s = IntStreamEx.of(1).onClose(i::incrementAndGet)) {
assertEquals(1, s.count());
}
assertEquals(1, i.get());
assertEquals(6, IntStreamEx.range(0, 4).sum());
assertEquals(3, IntStreamEx.range(0, 4).max().getAsInt());
assertEquals(0, IntStreamEx.range(0, 4).min().getAsInt());
assertEquals(1.5, IntStreamEx.range(0, 4).average().getAsDouble(), 0.000001);
assertEquals(4, IntStreamEx.range(0, 4).summaryStatistics().getCount());
assertArrayEquals(new int[] { 1, 2, 3 }, IntStreamEx.range(0, 5).skip(1).limit(3).toArray());
assertArrayEquals(new int[] { 1, 2, 3 }, IntStreamEx.of(3, 1, 2).sorted().toArray());
assertArrayEquals(new int[] { 1, 2, 3 }, IntStreamEx.of(1, 2, 1, 3, 2).distinct().toArray());
assertArrayEquals(new int[] { 2, 4, 6 }, IntStreamEx.range(1, 4).map(x -> x * 2).toArray());
assertArrayEquals(new long[] { 2, 4, 6 }, IntStreamEx.range(1, 4).mapToLong(x -> x * 2).toArray());
assertArrayEquals(new double[] { 2, 4, 6 }, IntStreamEx.range(1, 4).mapToDouble(x -> x * 2).toArray(), 0.0);
assertArrayEquals(new int[] { 1, 3 }, IntStreamEx.range(0, 5).filter(x -> x % 2 == 1).toArray());
assertEquals(6, IntStreamEx.of(1, 2, 3).reduce(Integer::sum).getAsInt());
assertEquals(Integer.MAX_VALUE, IntStreamEx.rangeClosed(1, Integer.MAX_VALUE).spliterator()
.getExactSizeIfKnown());
assertTrue(IntStreamEx.of(1, 2, 3).spliterator().hasCharacteristics(Spliterator.ORDERED));
assertFalse(IntStreamEx.of(1, 2, 3).unordered().spliterator().hasCharacteristics(Spliterator.ORDERED));
OfInt iterator = IntStreamEx.of(1, 2, 3).iterator();
assertEquals(1, iterator.nextInt());
assertEquals(2, iterator.nextInt());
assertEquals(3, iterator.nextInt());
assertFalse(iterator.hasNext());
List<Integer> list = new ArrayList<>();
IntStreamEx.range(10).parallel().forEachOrdered(list::add);
assertEquals(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), list);
assertTrue(IntStreamEx.empty().noneMatch(x -> true));
assertFalse(IntStreamEx.of(1).noneMatch(x -> true));
assertTrue(IntStreamEx.of(1).noneMatch(x -> false));
}
项目:ThrowingStream
文件:UncheckedIntStream.java
@Override
public OfInt iterator() {
return ThrowingBridge.of(getDelegate().iterator(), getExceptionClass());
}
项目:ThrowingStream
文件:UncheckedIntStream.java
@Override
public Spliterator.OfInt spliterator() {
return ThrowingBridge.of(getDelegate().spliterator(), getExceptionClass());
}
项目:streamex
文件:IntStreamEx.java
/**
* Produces an array containing cumulative results of applying the
* accumulation function going left to right.
*
* <p>
* This is a terminal operation.
*
* <p>
* For parallel stream it's not guaranteed that accumulator will always be
* executed in the same thread.
*
* <p>
* This method cannot take all the advantages of parallel streams as it must
* process elements strictly left to right.
*
* @param accumulator a
* <a href="package-summary.html#NonInterference">non-interfering
* </a>, <a href="package-summary.html#Statelessness">stateless</a>
* function for incorporating an additional element into a result
* @return the array where the first element is the first element of this
* stream and every successor element is the result of applying
* accumulator function to the previous array element and the
* corresponding stream element. The resulting array has the same
* length as this stream.
* @see #foldLeft(IntBinaryOperator)
* @since 0.5.1
*/
public int[] scanLeft(IntBinaryOperator accumulator) {
Spliterator.OfInt spliterator = spliterator();
long size = spliterator.getExactSizeIfKnown();
IntBuffer buf = new IntBuffer(size >= 0 && size <= Integer.MAX_VALUE ? (int) size : INITIAL_SIZE);
delegate(spliterator).forEachOrdered(i -> buf.add(buf.size == 0 ? i
: accumulator.applyAsInt(buf.data[buf.size - 1], i)));
return buf.toArray();
}
项目:bifurcan
文件:IntIterators.java
/**
* Represents a range implicitly starting at 0.
*
* @param max an exclusive end of the range.
* @param f a function which transforms a number in the range into a value.
* @return an iterator which yields the values returned by {@code f}
*/
public static OfInt range(long max, LongToIntFunction f) {
return range(0, max, f);
}
项目:parallel-stream-support
文件:ParallelIntStreamSupport.java
/**
* Creates a <strong>parallel</strong> {@code int} stream from the given Spliterator. This operation is similar to
* calling {@code StreamSupport.intStream(spliterator, true)} with the difference that a parallel
* <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#StreamOps">terminal
* operation</a> will be executed in the given {@link ForkJoinPool}.
*
* @param spliterator A {@code Spliterator.OfInt} describing the stream elements. Must not be {@code null}.
* @param workerPool Thread pool for parallel execution of a terminal operation. Must not be {@code null}.
* @return A parallel {@code int} stream that executes a terminal operation in the given {@link ForkJoinPool}.
* @see StreamSupport#intStream(Spliterator.OfInt, boolean)
*/
public static IntStream parallelStream(Spliterator.OfInt spliterator, ForkJoinPool workerPool) {
requireNonNull(spliterator, "Spliterator must not be null");
return new ParallelIntStreamSupport(intStream(spliterator, true), workerPool);
}
项目:parallel-stream-support
文件:ParallelIntStreamSupport.java
/**
* Creates a <strong>parallel</strong> {@code int} stream from the given Spliterator supplier. This operation is
* similar to calling {@code StreamSupport.intStream(supplier, characteristics, true)} with the difference that a
* parallel
* <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html#StreamOps">terminal
* operation</a> will be executed in the given {@link ForkJoinPool}.
*
* @param supplier A {@code Supplier} of a {@code Spliterator.OfInt}. Must not be {@code null}.
* @param characteristics Spliterator characteristics of the supplied {@code Spliterator}. The characteristics must
* be equal to {@code supplier.get().characteristics()}, otherwise undefined behavior may occur when terminal
* operation commences.
* @param workerPool Thread pool for parallel execution of a terminal operation. Must not be {@code null}.
* @return A parallel {@code int} stream that executes a terminal operation in the given {@link ForkJoinPool}.
* @see StreamSupport#intStream(Supplier, int, boolean)
*/
public static IntStream parallelStream(Supplier<? extends Spliterator.OfInt> supplier, int characteristics, ForkJoinPool workerPool) {
requireNonNull(supplier, "Supplier must not be null");
return new ParallelIntStreamSupport(intStream(supplier, characteristics, true), workerPool);
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns a stream consisting of the remaining elements of this stream
* after discarding the first {@code n} elements of the stream. If this
* stream contains fewer than {@code n} elements then an empty stream will
* be returned.
*
* <p>
* This is a stateful quasi-intermediate operation. Unlike
* {@link #skip(long)} it skips the first elements even if the stream is
* unordered. The main purpose of this method is to workaround the problem
* of skipping the first elements from non-sized source with further
* parallel processing and unordered terminal operation (such as
* {@link #forEach(IntConsumer)}). This problem was fixed in OracleJDK 8u60.
*
* <p>
* Also it behaves much better with infinite streams processed in parallel.
* For example,
* {@code IntStreamEx.iterate(0, i->i+1).skip(1).limit(100).parallel().toArray()}
* will likely to fail with {@code OutOfMemoryError}, but will work nicely
* if {@code skip} is replaced with {@code skipOrdered}.
*
* <p>
* For sequential streams this method behaves exactly like
* {@link #skip(long)}.
*
* @param n the number of leading elements to skip
* @return the new stream
* @throws IllegalArgumentException if {@code n} is negative
* @see #skip(long)
* @since 0.3.2
*/
public IntStreamEx skipOrdered(long n) {
Spliterator.OfInt spliterator = (isParallel() ? StreamSupport.intStream(spliterator(), false) : stream()).skip(
n).spliterator();
return delegate(spliterator);
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns a stream containing cumulative results of applying the
* accumulation function going left to right.
*
* <p>
* This is a stateful
* <a href="package-summary.html#StreamOps">quasi-intermediate</a>
* operation.
*
* <p>
* This operation resembles {@link #scanLeft(IntBinaryOperator)}, but unlike
* {@code scanLeft} this operation is intermediate and accumulation function
* must be associative.
*
* <p>
* This method cannot take all the advantages of parallel streams as it must
* process elements strictly left to right. Using an unordered source or
* removing the ordering constraint with {@link #unordered()} may improve
* the parallel processing speed.
*
* @param op an <a href="package-summary.html#Associativity">associative</a>
* , <a href="package-summary.html#NonInterference">non-interfering
* </a>, <a href="package-summary.html#Statelessness">stateless</a>
* function for computing the next element based on the previous one
* @return the new stream.
* @see #scanLeft(IntBinaryOperator)
* @since 0.6.1
*/
public IntStreamEx prefix(IntBinaryOperator op) {
return delegate(new PrefixOps.OfInt(spliterator(), op));
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns a sequential {@code IntStreamEx} containing a single element.
*
* @param element the single element
* @return a singleton sequential stream
*/
public static IntStreamEx of(int element) {
return of(new ConstSpliterator.OfInt(element, 1, true));
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns a sequential {@link IntStreamEx} created from given
* {@link java.util.Spliterator.OfInt}.
*
* @param spliterator a spliterator to create the stream from.
* @return the new stream
* @since 0.3.4
*/
public static IntStreamEx of(Spliterator.OfInt spliterator) {
return new IntStreamEx(spliterator, StreamContext.SEQUENTIAL);
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns a sequential, ordered {@link IntStreamEx} created from given
* {@link java.util.PrimitiveIterator.OfInt}.
*
* <p>
* This method is roughly equivalent to
* {@code IntStreamEx.of(Spliterators.spliteratorUnknownSize(iterator, ORDERED))}
* , but may show better performance for parallel processing.
*
* <p>
* Use this method only if you cannot provide better Stream source.
*
* @param iterator an iterator to create the stream from.
* @return the new stream
* @since 0.5.1
*/
public static IntStreamEx of(PrimitiveIterator.OfInt iterator) {
return of(new UnknownSizeSpliterator.USOfInt(iterator));
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns a sequential unordered {@code IntStreamEx} of given length which
* elements are equal to supplied value.
*
* @param value the constant value
* @param length the length of the stream
* @return a new {@code IntStreamEx}
* @since 0.1.2
*/
public static IntStreamEx constant(int value, long length) {
return of(new ConstSpliterator.OfInt(value, length, false));
}
项目:streamex
文件:IntStreamEx.java
/**
* Returns the spliterator which covers all the elements emitted by this
* emitter.
*
* @return the new spliterator
*/
default Spliterator.OfInt spliterator() {
return new EmitterSpliterator.OfInt(this);
}