Package org.codehaus.groovy.runtime
Class StreamGroovyMethods
java.lang.Object
org.codehaus.groovy.runtime.StreamGroovyMethods
-
Method Summary
Modifier and TypeMethodDescriptionstatic DoubleStreamdoubleStream(double[] self) Returns a sequentialDoubleStreamwith the specified array as its source.static <T> Stream<T>from(Stream<T> self, EmptyRange range) Returns an empty stream.static <T> Stream<T>Returns a (possibly empty) stream.static <T> TReturns element atindexornull.static <T> List<T>getAt(Stream<T> self, EmptyRange range) Returns an empty list.static <T> List<T>Returns element(s) inrangeor an empty list.static IntStreamintStream(int[] self) Returns a sequentialIntStreamwith the specified array as its source.static LongStreamlongStream(long[] self) Returns a sequentialLongStreamwith the specified array as its source.static <T> Stream<T>Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of theIterableobject.static <T> Stream<T>plus(Stream<? extends T> lhs, Collection<? extends T> rhs) Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of theCollectionobject.static <T> Stream<T>Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the second stream.static longsize(DoubleStream self) An alias forcount.static longAn alias forcount.static longsize(LongStream self) An alias forcount.static longAn alias forcount.stream(boolean[] self) Returns a sequentialStreamwith the specified array as its source.stream(byte[] self) Returns a sequentialStreamwith the specified array as its source.stream(char[] self) Returns a sequentialStreamwith the specified array as its source.stream(double[] self) Returns a sequentialStreamwith the specified array as its source.stream(float[] self) Returns a sequentialStreamwith the specified array as its source.stream(int[] self) Returns a sequentialStreamwith the specified array as its source.stream(long[] self) Returns a sequentialStreamwith the specified array as its source.stream(short[] self) Returns a sequentialStreamwith the specified array as its source.static <T> Stream<T>Returns a sequentialStreamwith the specified element(s) as its source.static <T> Stream<T>stream(Enumeration<T> self) Returns a sequentialStreamwith the specified element(s) as its source.static <T> Stream<T>Returns a sequentialStreamwith the specified element(s) as its source.static <T> Stream<T>static DoubleStreamstream(OptionalDouble self) If a value is present in theOptionalDouble, returns aDoubleStreamwith the value as its source or else an empty stream.static IntStreamstream(OptionalInt self) If a value is present in theOptionalInt, returns anIntStreamwith the value as its source or else an empty stream.static LongStreamstream(OptionalLong self) If a value is present in theOptionalLong, returns aLongStreamwith the value as its source or else an empty stream.static <T> Stream<T>stream(Spliterator<T> self) Returns a sequentialStreamwith the specified element(s) as its source.static <T> Stream<T>stream(NullObject self) Returns an empty sequentialStream.static <T> Stream<T>stream(T self) Returns a sequentialStreamcontaining a single element.static <T> Stream<T>stream(T[] self) Returns a sequentialStreamwith the specified array as its source.static <T> T[]Returns an array containing the elements of the stream.static <T> List<T>toList(BaseStream<T, ? extends BaseStream> self) Accumulates the elements of stream into a new List.static <T> List<T>Accumulates the elements of stream into a new List.static <T> Set<T>toSet(BaseStream<T, ? extends BaseStream> self) Accumulates the elements of stream into a new Set.static <T> Set<T>Accumulates the elements of stream into a new Set.
-
Method Details
-
getAt
Returns element atindexornull.This is a short-circuiting terminal operation.
import java.util.stream.Stream import static groovy.test.GroovyAssert.shouldFail Stream
stream = ['foo','bar','baz'].stream() shouldFail(IllegalArgumentException) { stream[-1] } stream = ['foo','bar','baz'].stream() assert stream[0] == 'foo' stream = ['foo','bar','baz'].stream() assert stream[1] == 'bar' stream = ['foo','bar','baz'].stream() assert stream[2] == 'baz' stream = ['foo','bar','baz'].stream() assert stream[3] === null - Throws:
IllegalArgumentException- ifindexis negative- Since:
- 5.0.0
-
getAt
Returns element(s) inrangeor an empty list.This is a short-circuiting terminal operation.
import java.util.stream.Stream import static groovy.test.GroovyAssert.shouldFail Stream<String> stream = ['foo','bar','baz'].stream() shouldFail(IllegalArgumentException) { stream[-1..0] } stream = ['foo','bar','baz'].stream() shouldFail(IllegalArgumentException) { stream[0..-1] } stream = ['foo','bar','baz'].stream() assert stream[0..<1] == ['foo'] stream = ['foo','bar','baz'].stream() assert stream[1..<2] == ['bar'] stream = ['foo','bar','baz'].stream() assert stream[2..<3] == ['baz'] stream = ['foo','bar','baz'].stream() assert stream[3..<4] == [] stream = ['foo','bar','baz'].stream() assert stream[0<..2] == ['bar','baz'] stream = ['foo','bar','baz'].stream() assert stream[0..99] == ['foo','bar','baz']- Throws:
IllegalArgumentException- for negative index or reverse range- Since:
- 5.0.0
-
getAt
Returns an empty list.import java.util.stream.Stream Stream<String> stream = ['foo','bar','baz'].stream() assert stream[1..<1].isEmpty()
- Since:
- 5.0.0
-
from
Returns a (possibly empty) stream.This is a short-circuiting intermediate operation.
import java.util.stream.Stream import static groovy.test.GroovyAssert.shouldFail Stream<String> stream = ['foo','bar','baz'].stream() shouldFail(IllegalArgumentException) { stream.from(-1..0) } stream = ['foo','bar','baz'].stream() shouldFail(IllegalArgumentException) { stream.from(0..-1) } stream = ['foo','bar','baz'].stream() assert stream.from(0..<1).toList() == ['foo'] stream = ['foo','bar','baz'].stream() assert stream.from(1..<2).toList() == ['bar'] stream = ['foo','bar','baz'].stream() assert stream.from(2..<3).toList() == ['baz'] stream = ['foo','bar','baz'].stream() assert stream.from(3..<4).toList() == [] stream = ['foo','bar','baz'].stream() assert stream.from(0<..2).toList() == ['bar','baz'] stream = ['foo','bar','baz'].stream() assert stream.from(0<..<2).toList() == ['bar'] stream = ['foo','bar','baz'].stream() assert stream.from(0..99).toList() == ['foo','bar','baz']- Throws:
IllegalArgumentException- for negative index or reverse range- Since:
- 5.0.0
-
from
Returns an empty stream.import java.util.stream.Stream Stream<String> stream = ['foo','bar','baz'].stream() assert !stream.from(1..<1).findAny().isPresent()
- Since:
- 5.0.0
-
plus
Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of theCollectionobject.import java.util.stream.Stream assert (Stream.of(1) + [2]).toList() == [1,2] assert (Stream.of(1) + []).toList() == [1]
- Since:
- 4.0.0
-
plus
Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of theIterableobject.import java.util.stream.Stream assert (Stream.of(1) + [2]).toList() == [1,2] assert (Stream.of(1) + []).toList() == [1]
- Since:
- 4.0.0
-
plus
Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the second stream.import java.util.stream.Stream assert (Stream.of(1) + Stream.<Integer>empty()).toList() == [1] assert (Stream.of(1) + Stream.of(2)).toList() == [1,2] assert (Stream.of(1) + [2].stream()).toList() == [1,2]
- Since:
- 4.0.0
-
stream
Returns a sequentialStreamcontaining a single element.def item = 'string' assert item.stream().toList() == ['string'] assert item.stream().findFirst().isPresent()
- Since:
- 3.0.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Type Parameters:
T- The type of the array elements- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 2.5.0
-
stream
Returns a sequentialStreamwith the specified element(s) as its source.def tokens = new StringTokenizer('one two') assert tokens.stream().toList() == ['one', 'two']- Since:
- 3.0.0
-
stream
Returns a sequentialStreamwith the specified element(s) as its source.class Items implements Iterable
{ Iterator<String> iterator() { ['one', 'two'].iterator() } } def items = new Items() assert items.stream().toList() == ['one', 'two'] - Since:
- 3.0.0
-
stream
Returns a sequentialStreamwith the specified element(s) as its source.[].iterator().stream().toList().isEmpty() ['one', 'two'].iterator().stream().toList() == ['one', 'two']
- Since:
- 3.0.0
-
stream
Returns a sequentialStreamwith the specified element(s) as its source.assert [].spliterator().stream().toList().isEmpty() assert ['one', 'two'].spliterator().stream().toList() == ['one', 'two']
- Since:
- 3.0.0
-
stream
Returns an empty sequentialStream.def item = null assert item.stream().toList() == [] assert !item.stream().findFirst().isPresent()
- Since:
- 3.0.0
-
stream
If a value is present in theOptional, returns aStreamwith the value as its source or else an empty stream.- Since:
- 3.0.0
-
stream
If a value is present in theOptionalInt, returns anIntStreamwith the value as its source or else an empty stream.- Since:
- 3.0.0
-
stream
If a value is present in theOptionalLong, returns aLongStreamwith the value as its source or else an empty stream.- Since:
- 3.0.0
-
stream
If a value is present in theOptionalDouble, returns aDoubleStreamwith the value as its source or else an empty stream.- Since:
- 3.0.0
-
intStream
Returns a sequentialIntStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 3.0.8
-
longStream
Returns a sequentialLongStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 3.0.8
-
doubleStream
Returns a sequentialDoubleStreamwith the specified array as its source.- Parameters:
self- The array, assumed to be unmodified during use- Returns:
- a
Streamfor the array - Since:
- 3.0.8
-
size
An alias forcount. Returns the count of elements for this stream. This is a terminal operator and, depending on the underlying stream, may invoke the stream pipeline, leaving it empty after this call. Care should be taken with stream pipelines that have side effects. This method should not be called on an infinite stream.assert [1, 2, 3].stream().size() == 3
- Parameters:
self- A Stream- Returns:
- the count of elements in this stream
- Since:
- 5.0.0
- See Also:
-
size
An alias forcount. Returns the count of elements for this stream. This is a terminal operator and, depending on the underlying stream, may invoke the stream pipeline, leaving it empty after this call. Care should be taken with stream pipelines that have side effects. This method should not be called on an infinite stream.int[] nums = [1, 2, 3] assert nums.intStream().size() == 3
- Parameters:
self- An IntStream- Returns:
- the count of elements in this stream
- Since:
- 5.0.0
- See Also:
-
size
An alias forcount. Returns the count of elements for this stream. This is a terminal operator and, depending on the underlying stream, may invoke the stream pipeline, leaving it empty after this call. Care should be taken with stream pipelines that have side effects. This method should not be called on an infinite stream.long[] nums = [1, 2, 3] assert nums.longStream().size() == 3
- Parameters:
self- A LongStream- Returns:
- the count of elements in this stream
- Since:
- 5.0.0
- See Also:
-
size
An alias forcount. Returns the count of elements for this stream. This is a terminal operator and, depending on the underlying stream, may invoke the stream pipeline, leaving it empty after this call. Care should be taken with stream pipelines that have side effects. This method should not be called on an infinite stream.double[] nums = [1.0d, 2.0d, 3.0d] assert nums.doubleStream().size() == 3
- Parameters:
self- A DoubleStream- Returns:
- the count of elements in this stream
- Since:
- 5.0.0
- See Also:
-
toArray
Returns an array containing the elements of the stream.import static groovy.test.GroovyAssert.shouldFail assert Arrays.equals([].stream().toArray(Object), new Object[0]) assert Arrays.equals([].stream().toArray(String), new String[0]) assert Arrays.equals([].stream().toArray(String[]), new String[0][]) assert Arrays.equals(['x'].stream().toArray(Object), ['x'].toArray()) assert Arrays.equals(['x'].stream().toArray(String), ['x'] as String[]) assert Arrays.deepEquals([['x'] as String[]].stream().toArray(String[]), [['x'] as String[]] as String[][]) assert Arrays.equals(['x'].stream().toArray(CharSequence), ['x'] as CharSequence[]) shouldFail(ArrayStoreException) { ['x'].stream().toArray(Thread) } shouldFail(IllegalArgumentException) { ['x'].stream().toArray((Class) null) } // Stream#toArray(IntFunction) should still be used for closure literal: assert Arrays.equals(['x'].stream().toArray { n -> new String[n] }, ['x'] as String[]) // Stream#toArray(IntFunction) should still be used for method reference: assert Arrays.equals(['x'].stream().toArray(String[]::new), ['x'] as String[])- Parameters:
self- the streamtype- the array element type- Since:
- 3.0.4
-
toList
Accumulates the elements of stream into a new List.- Type Parameters:
T- the type of element- Parameters:
self- the stream- Returns:
- a new
java.util.Listinstance - Since:
- 2.5.0
-
toList
Accumulates the elements of stream into a new List.- Type Parameters:
T- the type of element- Parameters:
self- thejava.util.stream.BaseStream- Returns:
- a new
java.util.Listinstance - Since:
- 2.5.0
-
toSet
Accumulates the elements of stream into a new Set.- Type Parameters:
T- the type of element- Parameters:
self- the stream- Returns:
- a new
java.util.Setinstance - Since:
- 2.5.0
-
toSet
Accumulates the elements of stream into a new Set.- Type Parameters:
T- the type of element- Parameters:
self- thejava.util.stream.BaseStream- Returns:
- a new
java.util.Setinstance - Since:
- 2.5.0
-