public class StreamUtils
extends java.lang.Object
| Constructor and Description |
|---|
StreamUtils() |
| Modifier and Type | Method and Description |
|---|---|
static <T> AnyM<T> |
anyM(java.util.stream.Stream<T> monad) |
static <T,U> java.util.stream.Stream<U> |
cast(java.util.stream.Stream<T> stream,
java.lang.Class<U> type)
Cast all elements in a stream to a given type, possibly throwing a
ClassCastException. |
static <T,A,R> java.util.List<R> |
collect(java.util.stream.Stream<T> stream,
java.lang.Iterable<java.util.stream.Collector> collectors)
Apply multiple Collectors, simultaneously to a Stream
|
static <T,A,R> java.util.List<R> |
collect(java.util.stream.Stream<T> stream,
java.util.stream.Stream<java.util.stream.Collector> collectors)
Apply multiple Collectors, simultaneously to a Stream
|
static <T> java.util.List |
collect(java.util.stream.Stream<T> stream,
Streamable<java.util.stream.Collector> collectors)
Apply multiple Collectors, simultaneously to a Stream
|
static <U> java.util.stream.Stream<U> |
concat(java.lang.Object o,
java.util.stream.Stream<U> stream)
Concat an Object and a Stream
If the Object is a Stream, Streamable or Iterable will be converted (or left) in Stream form and concatonated
Otherwise a new Stream.of(o) is created
|
static <U> java.util.stream.Stream<U> |
cycle(int times,
Streamable<U> s)
Create a Stream that finitely cycles the provided Streamable, provided number of times
|
static <T> java.util.stream.Stream<T> |
cycle(java.util.stream.Stream<T> stream,
Monoid<T> m,
int times)
Convert to a Stream with the result of a reduction operation repeated
specified times
|
static <U> java.util.stream.Stream<U> |
cycle(java.util.stream.Stream<U> s)
Create a new Stream that infiniteable cycles the provided Stream
|
static <U> java.util.stream.Stream<U> |
cycle(Streamable<U> s)
Create a Stream that infiniteable cycles the provided Streamable
|
static <T> java.util.stream.Stream<T> |
cycleUntil(java.util.stream.Stream<T> stream,
java.util.function.Predicate<? super T> predicate)
Repeat in a Stream until specified predicate holds
|
static <T> java.util.stream.Stream<T> |
cycleWhile(java.util.stream.Stream<T> stream,
java.util.function.Predicate<? super T> predicate)
Repeat in a Stream while specified predicate holds
|
static <T,R> java.util.stream.Stream<R> |
flatMapAnyM(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,AnyM<? extends R>> fn) |
static <T,R> java.util.stream.Stream<R> |
flatMapCollection(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.Collection<? extends R>> fn)
flatMap operation that allows a Collection to be returned
|
static <T,R> java.util.stream.Stream<R> |
flatMapCompletableFuture(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.concurrent.CompletableFuture<? extends R>> fn)
assertThat(StreamUtils.flatMapCompletableFuture(Stream.of(1,2,3),
i->CompletableFuture.completedFuture(i+2))
.collect(Collectors.toList()),
equalTo(Arrays.asList(3,4,5)));
|
static <T,R> java.util.stream.Stream<R> |
flatMapLazySeq(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,com.nurkiewicz.lazyseq.LazySeq<? extends R>> fn)
assertThat(StreamUtils.flatMapLazySeq(Stream.of(1,2,3),
i->LazySeq.of(i+2))
.collect(Collectors.toList()),
equalTo(Arrays.asList(3,4,5)));
|
static <T,R> java.util.stream.Stream<R> |
flatMapOptional(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.Optional<? extends R>> fn)
cross type flatMap, removes null entries
|
static <T,R> java.util.stream.Stream<R> |
flatMapSequenceM(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,SequenceM<? extends R>> fn)
flatMap operation
|
static <T,R> java.util.stream.Stream<R> |
flatMapStream(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.stream.BaseStream<? extends R,?>> fn)
assertThat(StreamUtils.flatMapStream(Stream.of(1,2,3),
i->Stream.of(i)).collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,3)));
|
static <T> T |
foldLeft(java.util.stream.Stream<T> stream,
Monoid<T> reducer) |
static <T> T |
foldLeftMapToType(java.util.stream.Stream<T> stream,
Monoid<T> reducer)
Attempt to map this Monad to the same type as the supplied Monoid (using mapToType on the monoid interface)
Then use Monoid to reduce values
|
static <T> T |
foldRight(java.util.stream.Stream<T> stream,
Monoid<T> reducer) |
static <T> T |
foldRightMapToType(java.util.stream.Stream<T> stream,
Monoid<T> reducer)
Attempt to map this Monad to the same type as the supplied Monoid (using mapToType on the monoid interface)
Then use Monoid to reduce values
|
static <T> java.util.stream.Stream<java.util.List<T>> |
grouped(java.util.stream.Stream<T> stream,
int groupSize)
Group elements in a Monad into a Stream
|
static <T> HeadAndTail<T> |
headAndTail(java.util.stream.Stream<T> stream)
extract head and tail together
|
static <T> java.util.Optional<HeadAndTail<T>> |
headAndTailOptional(java.util.stream.Stream<T> stream)
Stream<String> helloWorld = Stream.of();
Optional<HeadAndTail<String>> headAndTail = StreamUtils.headAndTailOptional(helloWorld);
assertTrue(!headAndTail.isPresent());
|
static <T> java.util.stream.Stream<T> |
intersperse(java.util.stream.Stream<T> stream,
T value)
Returns a stream with a given value interspersed between any two values
of this stream.
|
static <T> java.lang.String |
join(java.util.stream.Stream<T> stream) |
static <T> java.lang.String |
join(java.util.stream.Stream<T> stream,
java.lang.String sep) |
static <T> java.lang.String |
join(java.util.stream.Stream<T> stream,
java.lang.String sep,
java.lang.String start,
java.lang.String end) |
static <T> java.util.stream.Stream<java.lang.String> |
liftAndBindBufferedReader(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.io.BufferedReader> fn)
Perform a flatMap operation where the result will be a flattened stream of Strings
from the text loaded from the supplied BufferedReaders
|
static <T> java.util.stream.Stream<java.lang.Character> |
liftAndBindCharSequence(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.lang.CharSequence> fn)
Perform a flatMap operation where the result will be a flattened stream of Characters
from the CharSequence returned by the supplied function.
|
static <T> java.util.stream.Stream<java.lang.String> |
liftAndBindFile(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.io.File> fn)
Perform a flatMap operation where the result will be a flattened stream of Strings
from the text loaded from the supplied files.
|
static <T> java.util.stream.Stream<java.lang.String> |
liftAndBindURL(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.net.URL> fn)
Perform a flatMap operation where the result will be a flattened stream of Strings
from the text loaded from the supplied URLs
|
static <U> java.util.stream.Stream<U> |
limitUntil(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
Take elements from a Stream until the predicate holds
|
static <U> java.util.stream.Stream<U> |
limitWhile(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
Take elements from a stream while the predicates hold
|
static <T,R> R |
mapReduce(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,? extends R> mapper,
Monoid<R> reducer)
Attempt to map this Monad to the same type as the supplied Monoid, using supplied function
Then use Monoid to reduce values
|
static <T,R> R |
mapReduce(java.util.stream.Stream<T> stream,
Monoid<R> reducer)
Attempt to map this Monad to the same type as the supplied Monoid (using mapToType on the monoid interface)
Then use Monoid to reduce values
|
static <T> java.util.Optional<T> |
max(java.util.stream.Stream<T> stream,
java.util.Comparator<? super T> comparator) |
static <T,C extends java.lang.Comparable<? super C>> |
maxBy(java.util.stream.Stream<T> stream,
java.util.function.Function<T,C> f) |
static <T> java.util.Optional<T> |
min(java.util.stream.Stream<T> stream,
java.util.Comparator<? super T> comparator) |
static <T,C extends java.lang.Comparable<? super C>> |
minBy(java.util.stream.Stream<T> stream,
java.util.function.Function<T,C> f) |
static <T> boolean |
noneMatch(java.util.stream.Stream<T> stream,
java.util.function.Predicate<? super T> c)
assertThat(StreamUtils.noneMatch(of(1,2,3,4,5),it-> it==5000),equalTo(true));
|
static <T,U> java.util.stream.Stream<U> |
ofType(java.util.stream.Stream<T> stream,
java.lang.Class<U> type)
Keep only those elements in a stream that are of a given type.
|
static <R> java.util.List<R> |
reduce(java.util.stream.Stream<R> stream,
java.lang.Iterable<Monoid<R>> reducers)
Simultaneously reduce a stream with multiple reducers
|
static <R> java.util.List<R> |
reduce(java.util.stream.Stream<R> stream,
java.util.stream.Stream<Monoid<R>> reducers)
Simultanously reduce a stream with multiple reducers
|
static <U> java.util.stream.Stream<U> |
reverse(java.util.stream.Stream<U> stream)
Reverse a Stream
|
static <U> java.util.stream.Stream<U> |
reversedStream(java.util.List<U> list)
Create a reversed Stream from a List
|
static <T> java.util.stream.Stream<T> |
scanLeft(java.util.stream.Stream<T> stream,
Monoid<T> monoid)
Scan left using supplied Monoid
|
static <T> SequenceM<T> |
sequenceM(java.util.stream.Stream<T> monad) |
static <U> java.util.stream.Stream<U> |
skipUntil(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
skip elements in Stream until Predicate holds true
|
static <U> java.util.stream.Stream<U> |
skipWhile(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
skip elements in a Stream while Predicate holds true
|
static <T> java.util.stream.Stream<java.util.List<T>> |
sliding(java.util.stream.Stream<T> stream,
int windowSize)
Create a sliding view over this Stream
|
static <T> java.util.stream.Stream<java.util.List<T>> |
sliding(java.util.stream.Stream<T> stream,
int windowSize,
int increment)
Create a sliding view over this Stream
|
static <T> boolean |
startsWith(java.util.stream.Stream<T> stream,
java.lang.Iterable<T> iterable)
assertTrue(StreamUtils.startsWith(Stream.of(1,2,3,4),Arrays.asList(1,2,3)));
|
static <T> boolean |
startsWith(java.util.stream.Stream<T> stream,
java.util.Iterator<T> iterator)
assertTrue(StreamUtils.startsWith(Stream.of(1,2,3,4),Arrays.asList(1,2,3).iterator()))
|
static <T> com.nurkiewicz.lazyseq.LazySeq<T> |
steamToLazySeq(java.util.stream.Stream<T> stream)
Convert a Stream to a LazySeq
|
static <U> java.util.stream.Stream<U> |
stream(java.lang.Iterable<U> it)
Create a stream from an iterable
|
static <U> java.util.stream.Stream<U> |
stream(java.util.Iterator<U> it)
Create a stream from an iterator
|
static <K,V> java.util.stream.Stream<java.util.Map.Entry<K,V>> |
stream(java.util.Map<K,V> it)
Create a stream from a map
|
static <U> java.util.stream.Stream<U> |
stream(java.util.Spliterator<U> it) |
static <A> java.util.List<java.util.Iterator<A>> |
toBufferingCopier(java.util.Iterator<A> iterator,
int copies) |
static <A> Pair<java.util.Iterator<A>,java.util.Iterator<A>> |
toBufferingDuplicator(java.util.Iterator<A> iterator) |
static <A> Pair<java.util.Iterator<A>,java.util.Iterator<A>> |
toBufferingDuplicator(java.util.Iterator<A> iterator,
long pos) |
static <A> java.util.Collection<A> |
toConcurrentLazyCollection(java.util.Iterator<A> iterator) |
static <A> java.util.Collection<A> |
toConcurrentLazyCollection(java.util.stream.Stream<A> stream)
Lazily constructs a Collection from specified Stream.
|
static <A> java.util.Collection<A> |
toLazyCollection(java.util.Iterator<A> iterator) |
static <A> java.util.Collection<A> |
toLazyCollection(java.util.stream.Stream<A> stream)
Projects an immutable collection of this stream.
|
static <T> java.util.List<T> |
toList(java.util.stream.Stream<T> stream) |
static <T> java.util.Set<T> |
toSet(java.util.stream.Stream<T> stream) |
static <T> Streamable<T> |
toStreamable(java.util.stream.Stream<T> stream) |
static <T> boolean |
xMatch(java.util.stream.Stream<T> stream,
int num,
java.util.function.Predicate<? super T> c)
Check that there are specified number of matches of predicate in the Stream
|
static <T,S,R> java.util.stream.Stream<R> |
zip(java.util.stream.Stream<T> stream,
AnyM<? extends S> second,
java.util.function.BiFunction<? super T,? super S,? extends R> zipper)
Generic zip function.
|
static <T,S,R> java.util.stream.Stream<R> |
zip(java.util.stream.Stream<T> stream,
SequenceM<? extends S> second,
java.util.function.BiFunction<? super T,? super S,? extends R> zipper)
Generic zip function.
|
static <T,S,R> java.util.stream.Stream<R> |
zipStream(java.util.stream.Stream<T> stream,
java.util.stream.BaseStream<? extends S,? extends java.util.stream.BaseStream<? extends S,?>> second,
java.util.function.BiFunction<? super T,? super S,? extends R> zipper)
Zip this Monad with a Stream
|
public static final <T> java.util.stream.Stream<T> cycle(java.util.stream.Stream<T> stream,
Monoid<T> m,
int times)
List<Integer> list = StreamUtils.cycle(Stream.of(1,2,2),Reducers.toCountInt(),3)
.
.collect(Collectors.toList());
//is asList(3,3,3);
m - Monoid to be used in reductiontimes - Number of times value should be repeatedpublic static final <T> HeadAndTail<T> headAndTail(java.util.stream.Stream<T> stream)
Stream<String> helloWorld = Stream.of("hello","world","last");
HeadAndTail<String> headAndTail = StreamUtils.headAndTail(helloWorld);
String head = headAndTail.head();
assertThat(head,equalTo("hello"));
SequenceM<String> tail = headAndTail.tail();
assertThat(tail.headAndTail().head(),equalTo("world"));
public static final <T> java.util.Optional<HeadAndTail<T>> headAndTailOptional(java.util.stream.Stream<T> stream)
Stream<String> helloWorld = Stream.of();
Optional<HeadAndTail<String>> headAndTail = StreamUtils.headAndTailOptional(helloWorld);
assertTrue(!headAndTail.isPresent());
stream - to extract head and tail frompublic static <U> java.util.stream.Stream<U> skipUntil(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
StreamUtils.skipUntil(Stream.of(4,3,6,7),i->i==6).collect(Collectors.toList())
// [6,7]
stream - Stream to skip elements frompredicate - to applypublic static <U> java.util.stream.Stream<U> skipWhile(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
StreamUtils.skipWhile(Stream.of(4,3,6,7).sorted(),i->i<6).collect(Collectors.toList())
// [6,7]
stream - predicate - public static <U> java.util.stream.Stream<U> limitWhile(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
StreamUtils.limitWhile(Stream.of(4,3,6,7).sorted(),i->i<6).collect(Collectors.toList());
//[4,3]
stream - predicate - public static <U> java.util.stream.Stream<U> limitUntil(java.util.stream.Stream<U> stream,
java.util.function.Predicate<? super U> predicate)
StreamUtils.limitUntil(Stream.of(4,3,6,7),i->i==6).collect(Collectors.toList());
//[4,3]
stream - predicate - public static <U> java.util.stream.Stream<U> reverse(java.util.stream.Stream<U> stream)
assertThat(StreamUtils.reverse(Stream.of(1,2,3)).collect(Collectors.toList())
,equalTo(Arrays.asList(3,2,1)));
stream - Stream to reversepublic static <U> java.util.stream.Stream<U> reversedStream(java.util.List<U> list)
StreamUtils.reversedStream(asList(1,2,3))
.map(i->i*100)
.forEach(System.out::println);
assertThat(StreamUtils.reversedStream(Arrays.asList(1,2,3)).collect(Collectors.toList())
,equalTo(Arrays.asList(3,2,1)));
list - List to create a reversed Stream frompublic static <U> java.util.stream.Stream<U> cycle(java.util.stream.Stream<U> s)
assertThat(StreamUtils.cycle(Stream.of(1,2,3))
.limit(6)
.collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,3,1,2,3)));
s - Stream to cyclepublic static <U> java.util.stream.Stream<U> cycle(Streamable<U> s)
s - Streamable to cyclepublic static <U> java.util.stream.Stream<U> cycle(int times,
Streamable<U> s)
assertThat(StreamUtils.cycle(3,Streamable.of(1,2,2))
.collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,2,1,2,2,1,2,2)));
s - Streamable to cyclepublic static <U> java.util.stream.Stream<U> stream(java.lang.Iterable<U> it)
assertThat(StreamUtils.stream(Arrays.asList(1,2,3))
.collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,3)));
it - Iterable to convert to a Streampublic static <U> java.util.stream.Stream<U> stream(java.util.Spliterator<U> it)
public static <U> java.util.stream.Stream<U> stream(java.util.Iterator<U> it)
assertThat(StreamUtils.stream(Arrays.asList(1,2,3).iterator())
.collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,3)));
it - Iterator to convert to a Streampublic static <U> java.util.stream.Stream<U> concat(java.lang.Object o,
java.util.stream.Stream<U> stream)
o - Object to concatstream - Stream to concatpublic static <K,V> java.util.stream.Stream<java.util.Map.Entry<K,V>> stream(java.util.Map<K,V> it)
Map<String,String> map = new HashMap<>();
map.put("hello","world");
assertThat(StreamUtils.stream(map).collect(Collectors.toList()),equalTo(Arrays.asList(new AbstractMap.SimpleEntry("hello","world"))));
it - Iterator to convert to a Streampublic static <R> java.util.List<R> reduce(java.util.stream.Stream<R> stream,
java.lang.Iterable<Monoid<R>> reducers)
Monoid<Integer> sum = Monoid.of(0,(a,b)->a+b);
Monoid<Integer> mult = Monoid.of(1,(a,b)->a*b);
val result = StreamUtils.reduce(Stream.of(1,2,3,4),Arrays.asList(sum,mult));
assertThat(result,equalTo(Arrays.asList(10,24)));
stream - Stream to reducereducers - Reducers to reduce Streampublic static <R> java.util.List<R> reduce(java.util.stream.Stream<R> stream,
java.util.stream.Stream<Monoid<R>> reducers)
Monoid<String> concat = Monoid.of("",(a,b)->a+b);
Monoid<String> join = Monoid.of("",(a,b)->a+","+b);
assertThat(StreamUtils.reduce(Stream.of("hello", "world", "woo!"),Stream.of(concat,join))
,equalTo(Arrays.asList("helloworldwoo!",",hello,world,woo!")));
stream - Stream to reducereducers - Reducers to reduce Streampublic static <T,A,R> java.util.List<R> collect(java.util.stream.Stream<T> stream,
java.util.stream.Stream<java.util.stream.Collector> collectors)
List result = StreamUtils.collect(Stream.of(1,2,3),
Stream.of(Collectors.toList(),
Collectors.summingInt(Integer::intValue),
Collectors.averagingInt(Integer::intValue)));
assertThat(result.get(0),equalTo(Arrays.asList(1,2,3)));
assertThat(result.get(1),equalTo(6));
assertThat(result.get(2),equalTo(2.0));
stream - Stream to collectcollectors - Collectors to applypublic static <T,A,R> java.util.List<R> collect(java.util.stream.Stream<T> stream,
java.lang.Iterable<java.util.stream.Collector> collectors)
List result = StreamUtils.collect(Stream.of(1,2,3),
Arrays.asList(Collectors.toList(),
Collectors.summingInt(Integer::intValue),
Collectors.averagingInt(Integer::intValue)));
assertThat(result.get(0),equalTo(Arrays.asList(1,2,3)));
assertThat(result.get(1),equalTo(6));
assertThat(result.get(2),equalTo(2.0));
stream - Stream to collectcollectors - Collectors to applypublic static <T> java.util.List collect(java.util.stream.Stream<T> stream,
Streamable<java.util.stream.Collector> collectors)
List result = StreamUtils.collect(Stream.of(1,2,3),
Streamable.<Collector>of(Collectors.toList(),
Collectors.summingInt(Integer::intValue),
Collectors.averagingInt(Integer::intValue)));
assertThat(result.get(0),equalTo(Arrays.asList(1,2,3)));
assertThat(result.get(1),equalTo(6));
assertThat(result.get(2),equalTo(2.0));
stream - Stream to collectcollectors - Collectors to applypublic static final <T> java.util.stream.Stream<T> cycleWhile(java.util.stream.Stream<T> stream,
java.util.function.Predicate<? super T> predicate)
int count =0;
assertThat(StreamUtils.cycleWhile(Stream.of(1,2,2)
,next -> count++<6 )
.collect(Collectors.toList()),equalTo(Arrays.asList(1,2,2,1,2,2)));
predicate - repeat while truepublic static final <T> java.util.stream.Stream<T> cycleUntil(java.util.stream.Stream<T> stream,
java.util.function.Predicate<? super T> predicate)
count =0;
assertThat(StreamUtils.cycleUntil(Stream.of(1,2,2,3)
,next -> count++>10 )
.collect(Collectors.toList()),equalTo(Arrays.asList(1, 2, 2, 3, 1, 2, 2, 3, 1, 2, 2)));
predicate - repeat while truepublic static final <T,S,R> java.util.stream.Stream<R> zip(java.util.stream.Stream<T> stream,
SequenceM<? extends S> second,
java.util.function.BiFunction<? super T,? super S,? extends R> zipper)
Stream<List<Integer>> zipped = StreamUtils.zip(Stream.of(1,2,3)
,SequenceM.of(2,3,4),
(a,b) -> Arrays.asList(a,b));
List<Integer> zip = zipped.collect(Collectors.toList()).get(1);
assertThat(zip.get(0),equalTo(2));
assertThat(zip.get(1),equalTo(3));
second - Monad to zip withzipper - Zipping functionpublic static final <T,S,R> java.util.stream.Stream<R> zip(java.util.stream.Stream<T> stream,
AnyM<? extends S> second,
java.util.function.BiFunction<? super T,? super S,? extends R> zipper)
Stream<List<Integer>> zipped = StreamUtils.zip(Stream.of(1,2,3)
,anyM(Optional.of(2)),
(a,b) -> Arrays.asList(a,b));
List<Integer> zip = zipped.collect(Collectors.toList()).get(0);
assertThat(zip.get(0),equalTo(1));
assertThat(zip.get(1),equalTo(2));
public static final <T,S,R> java.util.stream.Stream<R> zipStream(java.util.stream.Stream<T> stream,
java.util.stream.BaseStream<? extends S,? extends java.util.stream.BaseStream<? extends S,?>> second,
java.util.function.BiFunction<? super T,? super S,? extends R> zipper)
Stream<List<Integer>> zipped = StreamUtils.zipStream(Stream.of(1,2,3)
,Stream.of(2,3,4),
(a,b) -> Arrays.asList(a,b));
List<Integer> zip = zipped.collect(Collectors.toList()).get(1);
assertThat(zip.get(0),equalTo(2));
assertThat(zip.get(1),equalTo(3));
second - Stream to zip withzipper - Zip funcitonpublic static final <T> java.util.stream.Stream<java.util.List<T>> sliding(java.util.stream.Stream<T> stream,
int windowSize,
int increment)
List<List<Integer>> list = StreamUtils.sliding(Stream.of(1,2,3,4,5,6)
,2,1)
.collect(Collectors.toList());
assertThat(list.get(0),hasItems(1,2));
assertThat(list.get(1),hasItems(2,3));
windowSize - Size of sliding windowpublic static final <T> java.util.stream.Stream<java.util.List<T>> sliding(java.util.stream.Stream<T> stream,
int windowSize)
List<List<Integer>> list = StreamUtils.sliding(Stream.of(1,2,3,4,5,6)
,2)
.collect(Collectors.toList());
assertThat(list.get(0),hasItems(1,2));
assertThat(list.get(1),hasItems(2,3));
stream - Stream to create sliding view onwindowSize - size of windowpublic static final <T> java.util.stream.Stream<java.util.List<T>> grouped(java.util.stream.Stream<T> stream,
int groupSize)
List<List<Integer>> list = StreamUtils.grouped(Stream.of(1,2,3,4,5,6)
,3)
.collect(Collectors.toList());
assertThat(list.get(0),hasItems(1,2,3));
assertThat(list.get(1),hasItems(4,5,6));
groupSize - Size of each Grouppublic static final <T> java.util.stream.Stream<T> scanLeft(java.util.stream.Stream<T> stream,
Monoid<T> monoid)
assertEquals(asList("", "a", "ab", "abc"),
StreamUtils.scanLeft(Stream.of("a", "b", "c"),Reducers.toString(""))
.collect(Collectors.toList());
monoid - public static <T> com.nurkiewicz.lazyseq.LazySeq<T> steamToLazySeq(java.util.stream.Stream<T> stream)
assertThat(Arrays.asList(1,2,3),equalTo(StreamUtils.steamToLazySeq(Stream.of(1,2,3)).toList()));
LazySeq - public static <T> boolean xMatch(java.util.stream.Stream<T> stream,
int num,
java.util.function.Predicate<? super T> c)
assertTrue(StreamUtils.xMatch(Stream.of(1,2,3,5,6,7),3, i->i>4));
public static final <T> boolean noneMatch(java.util.stream.Stream<T> stream,
java.util.function.Predicate<? super T> c)
assertThat(StreamUtils.noneMatch(of(1,2,3,4,5),it-> it==5000),equalTo(true));
public static final <T> java.lang.String join(java.util.stream.Stream<T> stream)
public static final <T> java.lang.String join(java.util.stream.Stream<T> stream,
java.lang.String sep)
public static final <T> java.lang.String join(java.util.stream.Stream<T> stream,
java.lang.String sep,
java.lang.String start,
java.lang.String end)
public static final <T,C extends java.lang.Comparable<? super C>> java.util.Optional<T> minBy(java.util.stream.Stream<T> stream,
java.util.function.Function<T,C> f)
public static final <T> java.util.Optional<T> min(java.util.stream.Stream<T> stream,
java.util.Comparator<? super T> comparator)
public static final <T,C extends java.lang.Comparable<? super C>> java.util.Optional<T> maxBy(java.util.stream.Stream<T> stream,
java.util.function.Function<T,C> f)
public static final <T> java.util.Optional<T> max(java.util.stream.Stream<T> stream,
java.util.Comparator<? super T> comparator)
public static final <T,R> R mapReduce(java.util.stream.Stream<T> stream,
Monoid<R> reducer)
reducer - Monoid to reduce valuespublic static final <T,R> R mapReduce(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,? extends R> mapper,
Monoid<R> reducer)
mapper - Function to map Monad typereducer - Monoid to reduce valuespublic static final <T> T foldLeft(java.util.stream.Stream<T> stream,
Monoid<T> reducer)
reducer - Use supplied Monoid to reduce values starting via foldLeftpublic static final <T> T foldLeftMapToType(java.util.stream.Stream<T> stream,
Monoid<T> reducer)
reducer - Monoid to reduce valuespublic static final <T> T foldRight(java.util.stream.Stream<T> stream,
Monoid<T> reducer)
reducer - Use supplied Monoid to reduce values starting via foldRightpublic static final <T> T foldRightMapToType(java.util.stream.Stream<T> stream,
Monoid<T> reducer)
reducer - Monoid to reduce valuespublic static final <T> Streamable<T> toStreamable(java.util.stream.Stream<T> stream)
public static final <T> java.util.Set<T> toSet(java.util.stream.Stream<T> stream)
public static final <T> java.util.List<T> toList(java.util.stream.Stream<T> stream)
public static final <T> boolean startsWith(java.util.stream.Stream<T> stream,
java.lang.Iterable<T> iterable)
assertTrue(StreamUtils.startsWith(Stream.of(1,2,3,4),Arrays.asList(1,2,3)));
iterable - public static final <T> boolean startsWith(java.util.stream.Stream<T> stream,
java.util.Iterator<T> iterator)
assertTrue(StreamUtils.startsWith(Stream.of(1,2,3,4),Arrays.asList(1,2,3).iterator()))
iterator - public static <T> AnyM<T> anyM(java.util.stream.Stream<T> monad)
public static <T> SequenceM<T> sequenceM(java.util.stream.Stream<T> monad)
public static <T> java.util.stream.Stream<T> intersperse(java.util.stream.Stream<T> stream,
T value)
assertThat(Arrays.asList(1, 0, 2, 0, 3, 0, 4),
equalTo( StreamUtils.intersperse(Stream.of(1, 2, 3, 4),0));
public static <T,U> java.util.stream.Stream<U> ofType(java.util.stream.Stream<T> stream,
java.lang.Class<U> type)
public static <T,U> java.util.stream.Stream<U> cast(java.util.stream.Stream<T> stream,
java.lang.Class<U> type)
ClassCastException.
StreamUtils.cast(Stream.of(1, "a", 2, "b", 3),Integer.class)
// throws ClassCastException
public static final <T,R> java.util.stream.Stream<R> flatMapSequenceM(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,SequenceM<? extends R>> fn)
assertThat(StreamUtils.flatMapSequenceM(Stream.of(1,2,3),
i->SequenceM.of(i+2)).collect(Collectors.toList()),
equalTo(Arrays.asList(3,4,5)));
fn - public static final <T,R> java.util.stream.Stream<R> flatMapAnyM(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,AnyM<? extends R>> fn)
public static final <T,R> java.util.stream.Stream<R> flatMapCollection(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.Collection<? extends R>> fn)
assertThat(StreamUtils.flatMapCollection(Stream.of(20),i->Arrays.asList(1,2,i))
.collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,20)));
public static final <T,R> java.util.stream.Stream<R> flatMapStream(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.stream.BaseStream<? extends R,?>> fn)
assertThat(StreamUtils.flatMapStream(Stream.of(1,2,3),
i->Stream.of(i)).collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,3)));
public static final <T,R> java.util.stream.Stream<R> flatMapOptional(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.Optional<? extends R>> fn)
assertThat(StreamUtils.flatMapOptional(Stream.of(1,2,3,null),
Optional::ofNullable)
.collect(Collectors.toList()),
equalTo(Arrays.asList(1,2,3)));
public static final <T,R> java.util.stream.Stream<R> flatMapCompletableFuture(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.util.concurrent.CompletableFuture<? extends R>> fn)
assertThat(StreamUtils.flatMapCompletableFuture(Stream.of(1,2,3),
i->CompletableFuture.completedFuture(i+2))
.collect(Collectors.toList()),
equalTo(Arrays.asList(3,4,5)));
public static final <T,R> java.util.stream.Stream<R> flatMapLazySeq(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,com.nurkiewicz.lazyseq.LazySeq<? extends R>> fn)
assertThat(StreamUtils.flatMapLazySeq(Stream.of(1,2,3),
i->LazySeq.of(i+2))
.collect(Collectors.toList()),
equalTo(Arrays.asList(3,4,5)));
public static final <T> java.util.stream.Stream<java.lang.Character> liftAndBindCharSequence(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.lang.CharSequence> fn)
List<Character> result = StreamUtils.liftAndBindCharSequence(Stream.of("input.file"),
.i->"hello world")
.toList();
assertThat(result,equalTo(Arrays.asList('h','e','l','l','o',' ','w','o','r','l','d')));
fn - public static final <T> java.util.stream.Stream<java.lang.String> liftAndBindFile(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.io.File> fn)
List<String> result = StreamUtils.liftAndBindFile(Stream.of("input.file")
.map(getClass().getClassLoader()::getResource)
.peek(System.out::println)
.map(URL::getFile)
,File::new)
.toList();
assertThat(result,equalTo(Arrays.asList("hello","world")));
fn - public static final <T> java.util.stream.Stream<java.lang.String> liftAndBindURL(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.net.URL> fn)
List<String> result = StreamUtils.liftAndBindURL(Stream.of("input.file")
,getClass().getClassLoader()::getResource)
.collect(Collectors.toList();
assertThat(result,equalTo(Arrays.asList("hello","world")));
fn - public static final <T> java.util.stream.Stream<java.lang.String> liftAndBindBufferedReader(java.util.stream.Stream<T> stream,
java.util.function.Function<? super T,java.io.BufferedReader> fn)
Listresult = StreamUtils.liftAndBindBufferedReader(Stream.of("input.file") .map(getClass().getClassLoader()::getResourceAsStream) .map(InputStreamReader::new) ,BufferedReader::new) .collect(Collectors.toList(); assertThat(result,equalTo(Arrays.asList("hello","world")));
fn - public static final <A> java.util.Collection<A> toLazyCollection(java.util.stream.Stream<A> stream)
public static final <A> java.util.Collection<A> toLazyCollection(java.util.Iterator<A> iterator)
public static final <A> java.util.Collection<A> toConcurrentLazyCollection(java.util.stream.Stream<A> stream)
stream - public static final <A> java.util.Collection<A> toConcurrentLazyCollection(java.util.Iterator<A> iterator)
public static final <A> Pair<java.util.Iterator<A>,java.util.Iterator<A>> toBufferingDuplicator(java.util.Iterator<A> iterator)
public static final <A> Pair<java.util.Iterator<A>,java.util.Iterator<A>> toBufferingDuplicator(java.util.Iterator<A> iterator, long pos)
public static final <A> java.util.List<java.util.Iterator<A>> toBufferingCopier(java.util.Iterator<A> iterator,
int copies)