Package org.apache.commons.lang3.stream
Class Streams
java.lang.Object
org.apache.commons.lang3.stream.Streams
Provides utility functions, and classes for working with the 
java.util.stream package, or more generally, with Java 8 lambdas. More specifically, it
 attempts to address the fact that lambdas are supposed not to throw Exceptions, at least not checked Exceptions, AKA instances of Exception. This
 enforces the use of constructs like:
 
 Consumer<java.lang.reflect.Method> consumer = m -> {
     try {
         m.invoke(o, args);
     } catch (Throwable t) {
         throw Failable.rethrow(t);
     }
 };
 stream.forEach(consumer);
 
 Using a Streams.FailableStream, this can be rewritten as follows:
 
 Streams.failable(stream).forEach(m -> m.invoke(o, args));
 Obviously, the second version is much more concise and the spirit of Lambda expressions is met better than in the first version.
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionstatic classA Collector type for arrays.static classA reduced, and simplified version of aStreamwith failable method signatures.
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionstatic <T> Streams.FailableStream<T>failableStream(Collection<T> stream) Converts the givenCollectioninto aStreams.FailableStream.static <T> Streams.FailableStream<T>failableStream(Stream<T> stream) Converts the givenstreaminto aStreams.FailableStream.static <T> Streams.FailableStream<T>failableStream(T value) Shorthand forStreams.failableStream(value == null ? Stream.empty() : Stream.of(value)).static <T> Streams.FailableStream<T>failableStream(T... values) Shorthand forStreams.failableStream(Streams.of(arrayValues)).static <E> Stream<E>instancesOf(Class<? super E> clazz, Collection<? super E> collection) Streams only instances of the give Class in a collection.static <E> Stream<E>nonNull(E array) Streams the non-null element.static <E> Stream<E>nonNull(E... array) Streams the non-null elements of an array.static <E> Stream<E>nonNull(Collection<E> collection) Streams the non-null elements of a collection.static <E> Stream<E>Streams the non-null elements of a stream.static <E> Stream<E>Creates a stream on the given Iterable.static <E> Stream<E>of(Collection<E> collection) Delegates toCollection.stream()or returnsStream.empty()if the collection is null.static <E> Stream<E>of(Enumeration<E> enumeration) Streams the elements of the given enumeration in order.static <E> Stream<E>Creates a stream on the given Iterator.static <T> Stream<T>of(T... values) Null-safe version ofStream.of(Object[]).static <E> Streams.FailableStream<E>stream(Collection<E> collection) Deprecated.static <T> Streams.FailableStream<T>Deprecated.static <T> Collector<T,?, T[]> Returns aCollectorthat accumulates the input elements into a new array.
- 
Constructor Details- 
StreamsDeprecated.Will be private in 4.0.0.Constructs a new instance.
 
- 
- 
Method Details- 
failableStreamConverts the givenCollectioninto aStreams.FailableStream. This is basically a simplified, reduced version of theStreamclass, with the same underlying element stream, except that failable objects, likeFailablePredicate,FailableFunction, orFailableConsumermay be applied, instead ofPredicate,Function, orConsumer. The idea is to rewrite a code snippet like this:
 as follows:final List<O> list; final Method m; final Function<O, String> mapper = (o) -> { try { return (String) m.invoke(o); } catch (Throwable t) { throw Failable.rethrow(t); } }; final List<String> strList = list.stream().map(mapper).collect(Collectors.toList());
 While the second version may not be quite as efficient (because it depends on the creation of additional, intermediate objects, of type FailableStream), it is much more concise, and readable, and meets the spirit of Lambdas better than the first version.final List<O> list; final Method m; final List<String> strList = Failable.stream(list.stream()).map((o) -> (String) m.invoke(o)).collect(Collectors.toList());- Type Parameters:
- T- The streams element type.
- Parameters:
- stream- The stream, which is being converted.
- Returns:
- The Streams.FailableStream, which has been created by converting the stream.
- Since:
- 3.13.0
 
- 
failableStreamConverts the givenstreaminto aStreams.FailableStream. This is basically a simplified, reduced version of theStreamclass, with the same underlying element stream, except that failable objects, likeFailablePredicate,FailableFunction, orFailableConsumermay be applied, instead ofPredicate,Function, orConsumer. The idea is to rewrite a code snippet like this:
 as follows:final List<O> list; final Method m; final Function<O, String> mapper = (o) -> { try { return (String) m.invoke(o); } catch (Throwable t) { throw Failable.rethrow(t); } }; final List<String> strList = list.stream().map(mapper).collect(Collectors.toList());
 While the second version may not be quite as efficient (because it depends on the creation of additional, intermediate objects, of type FailableStream), it is much more concise, and readable, and meets the spirit of Lambdas better than the first version.final List<O> list; final Method m; final List<String> strList = Failable.stream(list.stream()).map((o) -> (String) m.invoke(o)).collect(Collectors.toList());- Type Parameters:
- T- The streams element type.
- Parameters:
- stream- The stream, which is being converted.
- Returns:
- The Streams.FailableStream, which has been created by converting the stream.
- Since:
- 3.13.0
 
- 
failableStreamShorthand forStreams.failableStream(value == null ? Stream.empty() : Stream.of(value)).- Type Parameters:
- T- the type of stream elements.
- Parameters:
- value- the single element of the new stream, may be- null.
- Returns:
- the new FailableStream on valueor an empty stream.
- Since:
- 3.15.0
 
- 
failableStreamShorthand forStreams.failableStream(Streams.of(arrayValues)).- Type Parameters:
- T- the type of stream elements.
- Parameters:
- values- the elements of the new stream, may be- null.
- Returns:
- the new FailableStream on valuesor an empty stream.
- Since:
- 3.14.0
 
- 
instancesOfStreams only instances of the give Class in a collection.This method shorthand for: (Stream<E>) Streams.toStream(collection).filter(collection, SomeClass.class::isInstance);- Type Parameters:
- E- the type of elements in the collection we want to stream.
- Parameters:
- clazz- the type of elements in the collection we want to stream.
- collection- the collection to stream or null.
- Returns:
- A non-null stream that only provides instances we want.
- Since:
- 3.13.0
 
- 
nonNullStreams the non-null elements of a collection.- Type Parameters:
- E- the type of elements in the collection.
- Parameters:
- collection- the collection to stream or null.
- Returns:
- A non-null stream that filters out null elements.
- Since:
- 3.13.0
 
- 
nonNullStreams the non-null element.- Type Parameters:
- E- the type of elements in the collection.
- Parameters:
- array- the element to stream or null.
- Returns:
- A non-null stream that filters out a null element.
- Since:
- 3.15.0
 
- 
nonNullStreams the non-null elements of an array.- Type Parameters:
- E- the type of elements in the collection.
- Parameters:
- array- the array to stream or null.
- Returns:
- A non-null stream that filters out null elements.
- Since:
- 3.13.0
 
- 
nonNullStreams the non-null elements of a stream.- Type Parameters:
- E- the type of elements in the collection.
- Parameters:
- stream- the stream to stream or null.
- Returns:
- A non-null stream that filters out null elements.
- Since:
- 3.13.0
 
- 
ofDelegates toCollection.stream()or returnsStream.empty()if the collection is null.- Type Parameters:
- E- the type of elements in the collection.
- Parameters:
- collection- the collection to stream or null.
- Returns:
- Collection.stream()or- Stream.empty()if the collection is null.
- Since:
- 3.13.0
 
- 
ofStreams the elements of the given enumeration in order.- Type Parameters:
- E- The enumeration element type.
- Parameters:
- enumeration- The enumeration to stream.
- Returns:
- a new stream.
- Since:
- 3.13.0
 
- 
ofCreates a stream on the given Iterable.- Type Parameters:
- E- the type of elements in the Iterable.
- Parameters:
- iterable- the Iterable to stream or null.
- Returns:
- a new Stream or Stream.empty()if the Iterable is null.
- Since:
- 3.13.0
 
- 
ofCreates a stream on the given Iterator.- Type Parameters:
- E- the type of elements in the Iterator.
- Parameters:
- iterator- the Iterator to stream or null.
- Returns:
- a new Stream or Stream.empty()if the Iterator is null.
- Since:
- 3.13.0
 
- 
ofNull-safe version ofStream.of(Object[]).- Type Parameters:
- T- the type of stream elements.
- Parameters:
- values- the elements of the new stream, may be- null.
- Returns:
- the new stream on valuesorStream.empty().
- Since:
- 3.13.0
 
- 
streamDeprecated.Converts the givenCollectioninto aStreams.FailableStream. This is basically a simplified, reduced version of theStreamclass, with the same underlying element stream, except that failable objects, likeFailablePredicate,FailableFunction, orFailableConsumermay be applied, instead ofPredicate,Function, orConsumer. The idea is to rewrite a code snippet like this:
 as follows:final List<O> list; final Method m; final Function<O, String> mapper = (o) -> { try { return (String) m.invoke(o); } catch (Throwable t) { throw Failable.rethrow(t); } }; final List<String> strList = list.stream().map(mapper).collect(Collectors.toList());
 While the second version may not be quite as efficient (because it depends on the creation of additional, intermediate objects, of type FailableStream), it is much more concise, and readable, and meets the spirit of Lambdas better than the first version.final List<O> list; final Method m; final List<String> strList = Failable.stream(list.stream()).map((o) -> (String) m.invoke(o)).collect(Collectors.toList());- Type Parameters:
- E- The streams element type.
- Parameters:
- collection- The stream, which is being converted.
- Returns:
- The Streams.FailableStream, which has been created by converting the stream.
 
- 
streamDeprecated.Converts the givenstreaminto aStreams.FailableStream. This is basically a simplified, reduced version of theStreamclass, with the same underlying element stream, except that failable objects, likeFailablePredicate,FailableFunction, orFailableConsumermay be applied, instead ofPredicate,Function, orConsumer. The idea is to rewrite a code snippet like this:
 as follows:final List<O> list; final Method m; final Function<O, String> mapper = (o) -> { try { return (String) m.invoke(o); } catch (Throwable t) { throw Failable.rethrow(t); } }; final List<String> strList = list.stream().map(mapper).collect(Collectors.toList());
 While the second version may not be quite as efficient (because it depends on the creation of additional, intermediate objects, of type FailableStream), it is much more concise, and readable, and meets the spirit of Lambdas better than the first version.final List<O> list; final Method m; final List<String> strList = Failable.stream(list.stream()).map((o) -> (String) m.invoke(o)).collect(Collectors.toList());- Type Parameters:
- T- The streams element type.
- Parameters:
- stream- The stream, which is being converted.
- Returns:
- The Streams.FailableStream, which has been created by converting the stream.
 
- 
toArrayReturns aCollectorthat accumulates the input elements into a new array.- Type Parameters:
- T- the type of the input elements
- Parameters:
- elementType- Type of an element in the array.
- Returns:
- a Collectorwhich collects all the input elements into an array, in encounter order
 
 
-