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 Summary
Modifier and TypeClassDescriptionstatic class
A Collector type for arrays.static class
A reduced, and simplified version of aStream
with failable method signatures. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T> Streams.FailableStream<T>
failableStream
(Collection<T> stream) Converts the givenCollection
into aStreams.FailableStream
.static <T> Streams.FailableStream<T>
failableStream
(Stream<T> stream) Converts the givenstream
into 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 aCollector
that accumulates the input elements into a new array.
-
Constructor Details
-
Streams
Deprecated.Will be private in 4.0.0.Constructs a new instance.
-
-
Method Details
-
failableStream
Converts the givenCollection
into aStreams.FailableStream
. This is basically a simplified, reduced version of theStream
class, with the same underlying element stream, except that failable objects, likeFailablePredicate
,FailableFunction
, orFailableConsumer
may be applied, instead ofPredicate
,Function
, orConsumer
. The idea is to rewrite a code snippet like this: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());
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
-
failableStream
Converts the givenstream
into aStreams.FailableStream
. This is basically a simplified, reduced version of theStream
class, with the same underlying element stream, except that failable objects, likeFailablePredicate
,FailableFunction
, orFailableConsumer
may be applied, instead ofPredicate
,Function
, orConsumer
. The idea is to rewrite a code snippet like this: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());
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
-
failableStream
Shorthand 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 benull
.- Returns:
- the new FailableStream on
value
or an empty stream. - Since:
- 3.15.0
-
failableStream
Shorthand forStreams.failableStream(Streams.of(arrayValues))
.- Type Parameters:
T
- the type of stream elements.- Parameters:
values
- the elements of the new stream, may benull
.- Returns:
- the new FailableStream on
values
or an empty stream. - Since:
- 3.14.0
-
instancesOf
Streams 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
-
nonNull
Streams 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
-
nonNull
Streams 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
-
nonNull
Streams 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
-
nonNull
Streams 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
-
of
Delegates 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()
orStream.empty()
if the collection is null.- Since:
- 3.13.0
-
of
Streams 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
-
of
Creates 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
-
of
Creates 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
-
of
Null-safe version ofStream.of(Object[])
.- Type Parameters:
T
- the type of stream elements.- Parameters:
values
- the elements of the new stream, may benull
.- Returns:
- the new stream on
values
orStream.empty()
. - Since:
- 3.13.0
-
stream
Deprecated.Converts the givenCollection
into aStreams.FailableStream
. This is basically a simplified, reduced version of theStream
class, with the same underlying element stream, except that failable objects, likeFailablePredicate
,FailableFunction
, orFailableConsumer
may be applied, instead ofPredicate
,Function
, orConsumer
. The idea is to rewrite a code snippet like this: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());
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.
-
stream
Deprecated.Converts the givenstream
into aStreams.FailableStream
. This is basically a simplified, reduced version of theStream
class, with the same underlying element stream, except that failable objects, likeFailablePredicate
,FailableFunction
, orFailableConsumer
may be applied, instead ofPredicate
,Function
, orConsumer
. The idea is to rewrite a code snippet like this: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());
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.
-
toArray
Returns aCollector
that 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
Collector
which collects all the input elements into an array, in encounter order
-