Package org.codehaus.groovy.runtime

# Class StreamGroovyMethods

java.lang.Object
org.codehaus.groovy.runtime.StreamGroovyMethods

public class StreamGroovyMethods extends Object

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DoubleStream`
  `doubleStream(double[] self)`
  Returns a sequential `DoubleStream` with the specified array as its source.
  `static <T> Stream<T>`
  `from(Stream<T> self, EmptyRange range)`
  Returns an empty stream.
  `static <T> Stream<T>`
  `from(Stream<T> self, IntRange range)`
  Returns a (possibly empty) stream.
  `static <T> T`
  `getAt(Stream<T> self, int index)`
  Returns element at `index` or `null`.
  `static <T> List<T>`
  `getAt(Stream<T> self, EmptyRange range)`
  Returns an empty list.
  `static <T> List<T>`
  `getAt(Stream<T> self, IntRange range)`
  Returns element(s) in `range` or an empty list.
  `static IntStream`
  `intStream(int[] self)`
  Returns a sequential `IntStream` with the specified array as its source.
  `static LongStream`
  `longStream(long[] self)`
  Returns a sequential `LongStream` with the specified array as its source.
  `static <T> Stream<T>`
  `plus(Stream<? extends T> lhs, Iterable<? extends T> rhs)`
  Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the `Iterable` object.
  `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 the `Collection` object.
  `static <T> Stream<T>`
  `plus(Stream<? extends T> lhs, Stream<? extends T> rhs)`
  Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the second stream.
  `static Stream<Boolean>`
  `stream(boolean[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Byte>`
  `stream(byte[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Character>`
  `stream(char[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Double>`
  `stream(double[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Float>`
  `stream(float[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Integer>`
  `stream(int[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Long>`
  `stream(long[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static Stream<Short>`
  `stream(short[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static <T> Stream<T>`
  `stream(Iterable<T> self)`
  Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>`
  `stream(Enumeration<T> self)`
  Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>`
  `stream(Iterator<T> self)`
  Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>`
  `stream(Optional<T> self)`
  If a value is present in the `Optional`, returns a `Stream` with the value as its source or else an empty stream.
  `static DoubleStream`
  `stream(OptionalDouble self)`
  If a value is present in the `OptionalDouble`, returns a `DoubleStream` with the value as its source or else an empty stream.
  `static IntStream`
  `stream(OptionalInt self)`
  If a value is present in the `OptionalInt`, returns an `IntStream` with the value as its source or else an empty stream.
  `static LongStream`
  `stream(OptionalLong self)`
  If a value is present in the `OptionalLong`, returns a `LongStream` with the value as its source or else an empty stream.
  `static <T> Stream<T>`
  `stream(Spliterator<T> self)`
  Returns a sequential `Stream` with the specified element(s) as its source.
  `static <T> Stream<T>`
  `stream(NullObject self)`
  Returns an empty sequential `Stream`.
  `static <T> Stream<T>`
  `stream(T self)`
  Returns a sequential `Stream` containing a single element.
  `static <T> Stream<T>`
  `stream(T[] self)`
  Returns a sequential `Stream` with the specified array as its source.
  `static <T> T[]`
  `toArray(Stream<? extends T> self, Class<T> type)`
  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>`
  `toList(Stream<T> self)`
  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>`
  `toSet(Stream<T> self)`
  Accumulates the elements of stream into a new Set.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### getAt

    public static <T> T getAt(Stream<T> self, int index)
    Returns element at `index` or `null`.

    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` - if `index` is negative
    Since:
      5.0.0

  - ### getAt

    public static <T> List<T> getAt(Stream<T> self, IntRange range)
    Returns element(s) in `range` or 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

    public static <T> List<T> getAt(Stream<T> self, EmptyRange range)
    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

    public static <T> Stream<T> from(Stream<T> self, IntRange range)
    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

    public static <T> Stream<T> from(Stream<T> self, EmptyRange range)
    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

    public 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 the `Collection` object.

         import java.util.stream.Stream
         assert (Stream.of(1) + [2]).toList() == [1,2]
         assert (Stream.of(1) + []).toList() == [1]

    Since:
      4.0.0

  - ### plus

    public static <T> Stream<T> plus(Stream<? extends T> lhs, Iterable<? extends T> rhs)
    Returns a lazily concatenated stream whose elements are all the elements of this stream followed by all the elements of the `Iterable` object.

         import java.util.stream.Stream
         assert (Stream.of(1) + [2]).toList() == [1,2]
         assert (Stream.of(1) + []).toList() == [1]

    Since:
      4.0.0

  - ### plus

    public static <T> Stream<T> plus(Stream<? extends T> lhs, Stream<? extends T> rhs)
    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

    public static <T> Stream<T> stream(T self)
    Returns a sequential `Stream` containing a single element.

         def item = 'string'
         assert item.stream().toList() == ['string']
         assert item.stream().findFirst().isPresent()

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream(T[] self)
    Returns a sequential `Stream` with 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 `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Integer> stream(int[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Long> stream(long[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Double> stream(double[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Character> stream(char[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Byte> stream(byte[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Short> stream(short[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Boolean> stream(boolean[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static Stream<Float> stream(float[] self)
    Returns a sequential `Stream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      2.5.0

  - ### stream

    public static <T> Stream<T> stream(Enumeration<T> self)
    Returns a sequential `Stream` with the specified element(s) as its source.

         def tokens = new StringTokenizer('one two')
         assert tokens.stream().toList() == ['one', 'two']

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream(Iterable<T> self)
    Returns a sequential `Stream` with 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

    public static <T> Stream<T> stream(Iterator<T> self)
    Returns a sequential `Stream` with the specified element(s) as its source.

         [].iterator().stream().toList().isEmpty()
         ['one', 'two'].iterator().stream().toList() == ['one', 'two']

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream(Spliterator<T> self)
    Returns a sequential `Stream` with 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

    public static <T> Stream<T> stream(NullObject self)
    Returns an empty sequential `Stream`.

         def item = null
         assert item.stream().toList() == []
         assert !item.stream().findFirst().isPresent()

    Since:
      3.0.0

  - ### stream

    public static <T> Stream<T> stream(Optional<T> self)
    If a value is present in the `Optional`, returns a `Stream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### stream

    public static IntStream stream(OptionalInt self)
    If a value is present in the `OptionalInt`, returns an `IntStream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### stream

    public static LongStream stream(OptionalLong self)
    If a value is present in the `OptionalLong`, returns a `LongStream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### stream

    public static DoubleStream stream(OptionalDouble self)
    If a value is present in the `OptionalDouble`, returns a `DoubleStream` with the value as its source or else an empty stream.
    Since:
      3.0.0

  - ### intStream

    public static IntStream intStream(int[] self)
    Returns a sequential `IntStream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      3.0.8

  - ### longStream

    public static LongStream longStream(long[] self)
    Returns a sequential `LongStream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      3.0.8

  - ### doubleStream

    public static DoubleStream doubleStream(double[] self)
    Returns a sequential `DoubleStream` with the specified array as its source.
    Parameters:
      `self` - The array, assumed to be unmodified during use
    Returns:
      a `Stream` for the array
    Since:
      3.0.8

  - ### toArray

    public static <T> T[] toArray(Stream<? extends T> self, Class<T> type)
    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 stream
      `type` - the array element type
    Since:
      3.0.4

  - ### toList

    public static <T> List<T> toList(Stream<T> self)
    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.List` instance
    Since:
      2.5.0

  - ### toList

    public static <T> List<T> toList(BaseStream<T,? extends BaseStream> self)
    Accumulates the elements of stream into a new List.
    Type Parameters:
      `T` - the type of element
    Parameters:
      `self` - the `java.util.stream.BaseStream`
    Returns:
      a new `java.util.List` instance
    Since:
      2.5.0

  - ### toSet

    public static <T> Set<T> toSet(Stream<T> self)
    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.Set` instance
    Since:
      2.5.0

  - ### toSet

    public static <T> Set<T> toSet(BaseStream<T,? extends BaseStream> self)
    Accumulates the elements of stream into a new Set.
    Type Parameters:
      `T` - the type of element
    Parameters:
      `self` - the `java.util.stream.BaseStream`
    Returns:
      a new `java.util.Set` instance
    Since:
      2.5.0