Streams
- @Deprecated public class org.apache.commons.lang3.Streams[source]
Deprecated: Use
org.apache.commons.lang3.stream.Streams.Provides utility functions, and classes for working with the
java.util.streampackage, 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 ofException. This enforces the use of constructs like:Consumer<java.lang.reflect.Method> consumer = m -> { try { m.invoke(o, args); } catch (Throwable t) { throw Functions.rethrow(t); } }; stream.forEach(consumer);
Using a
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.
Constructors
Constructs a new instance. |
Methods
Converts the given |
|
Converts the given |
|
Returns a |
- public static <O> Streams.FailableStream<O> stream(Collection<O> stream)[source]
Converts the given
Collectioninto aFailableStream. 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:final List<O> list; final Method m; final Function<O,String> mapper = (o) -> { try { return (String) m.invoke(o); } catch (Throwable t) { throw Functions.rethrow(t); } }; final List<String> strList = list.stream() .map(mapper).collect(Collectors.toList());
as follows:
final List<O> list; final Method m; final List<String> strList = Functions.stream(list.stream()) .map((o) -> (String) m.invoke(o)).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.
- Type parameters:
<O> – The streams element type.
- Parameters:
stream – The stream, which is being converted.
- Returns:
The
FailableStream, which has been created by converting the stream.
- public static <O> Streams.FailableStream<O> stream(Stream<O> stream)[source]
Converts the given
streaminto aFailableStream. 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:final List<O> list; final Method m; final Function<O,String> mapper = (o) -> { try { return (String) m.invoke(o); } catch (Throwable t) { throw Functions.rethrow(t); } }; final List<String> strList = list.stream() .map(mapper).collect(Collectors.toList());
as follows:
final List<O> list; final Method m; final List<String> strList = Functions.stream(list.stream()) .map((o) -> (String) m.invoke(o)).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.
- Type parameters:
<O> – The streams element type.
- Parameters:
stream – The stream, which is being converted.
- Returns:
The
FailableStream, which has been created by converting the stream.
- public static <O> Collector<O, ?, O[]> toArray(Class<O> elementType)[source]
Returns a
Collectorthat accumulates the input elements into a new array.- Parameters:
elementType – Type of an element in the array.
- Type parameters:
<O> – The type of the input elements.
- Returns:
A
Collectorwhich collects all the input elements into an array, in encounter order.