public interface CollectionX<T> extends ExtendedTraversable<T>, IterableCollectable<T>, java.lang.Iterable<T>, Sequential<T>, IterableFunctor<T>, Foldable<T>, IterableFilterable<T>, ZippingApplicativable<T>, Unit<T>, java.util.Collection<T>, CyclopsCollectable<T>
| Modifier and Type | Method and Description |
|---|---|
default <U> CollectionX<U> |
cast(java.lang.Class<U> type)
Cast all elements in a stream to a given type, possibly throwing a
ClassCastException. |
default CyclopsCollectable<T> |
collectable()
Narrow this class to a Collectable
|
CollectionX<ReactiveSeq<T>> |
combinations()
ReactiveSeq.of(1,2,3).combinations()
//SequenceM[SequenceM[],SequenceM[1],SequenceM[2],SequenceM[3].SequenceM[1,2],SequenceM[1,3],SequenceM[2,3]
,SequenceM[1,2,3]]
|
CollectionX<ReactiveSeq<T>> |
combinations(int size)
ReactiveSeq.of(1,2,3).combinations(2)
//SequenceM[SequenceM[1,2],SequenceM[1,3],SequenceM[2,3]]
|
CollectionX<T> |
combine(java.util.function.BiPredicate<? super T,? super T> predicate,
java.util.function.BinaryOperator<T> op)
Combine two adjacent elements in a traversable using the supplied BinaryOperator
This is a stateful grouping & reduction operation.
|
CollectionX<T> |
distinct() |
CollectionX<T> |
dropRight(int num) |
CollectionX<T> |
dropUntil(java.util.function.Predicate<? super T> p) |
CollectionX<T> |
dropWhile(java.util.function.Predicate<? super T> p) |
CollectionX<T> |
filter(java.util.function.Predicate<? super T> pred) |
CollectionX<T> |
filterNot(java.util.function.Predicate<? super T> fn) |
default java.util.Optional<T> |
findAny() |
default java.util.Optional<T> |
findFirst() |
<R> CollectionX<R> |
flatMap(java.util.function.Function<? super T,? extends java.lang.Iterable<? extends R>> mapper) |
default <R1,R> ReactiveSeq<R> |
forEach2(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1,
java.util.function.Function<? super T,java.util.function.Function<? super R1,? extends R>> yieldingFunction)
Perform a two level nested internal iteration over this Stream and the
supplied stream
|
default <R1,R> ReactiveSeq<R> |
forEach2(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1,
java.util.function.Function<? super T,java.util.function.Function<? super R1,java.lang.Boolean>> filterFunction,
java.util.function.Function<? super T,java.util.function.Function<? super R1,? extends R>> yieldingFunction)
Perform a two level nested internal iteration over this Stream and the
supplied stream
|
default <R1,R2,R> ReactiveSeq<R> |
forEach3(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1,
java.util.function.Function<? super T,java.util.function.Function<? super R1,java.lang.Iterable<R2>>> stream2,
java.util.function.Function<? super T,java.util.function.Function<? super R1,java.util.function.Function<? super R2,? extends R>>> yieldingFunction)
Perform a three level nested internal iteration over this Stream and the
supplied streams
|
default <R1,R2,R> ReactiveSeq<R> |
forEach3(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1,
java.util.function.Function<? super T,java.util.function.Function<? super R1,java.lang.Iterable<R2>>> stream2,
java.util.function.Function<? super T,java.util.function.Function<? super R1,java.util.function.Function<? super R2,java.lang.Boolean>>> filterFunction,
java.util.function.Function<? super T,java.util.function.Function<? super R1,java.util.function.Function<? super R2,? extends R>>> yieldingFunction)
Perform a three level nested internal iteration over this Stream and the
supplied streams
|
<T1> CollectionX<T1> |
from(java.util.Collection<T1> c) |
static <T> CollectionX<T> |
fromCollection(java.util.Collection<T> col) |
default java.util.Optional<T> |
getAtIndex(int index) |
default <K> MapX<K,java.util.List<T>> |
groupBy(java.util.function.Function<? super T,? extends K> classifier)
Use classifier function to group elements in this Sequence into a Map
|
<K> CollectionX<org.jooq.lambda.tuple.Tuple2<K,org.jooq.lambda.Seq<T>>> |
grouped(java.util.function.Function<? super T,? extends K> classifier) |
<K,A,D> CollectionX<org.jooq.lambda.tuple.Tuple2<K,D>> |
grouped(java.util.function.Function<? super T,? extends K> classifier,
java.util.stream.Collector<? super T,A,D> downstream) |
CollectionX<ListX<T>> |
grouped(int groupSize)
Group elements in a Stream
|
default T |
head() |
default HeadAndTail<T> |
headAndTail()
extract head and tail together, where head is expected to be present
|
CollectionX<T> |
limit(long num)
assertThat(ReactiveSeq.of(4,3,6,7).limit(2).toList(),equalTo(Arrays.asList(4,3)); |
<R> CollectionX<R> |
map(java.util.function.Function<? super T,? extends R> mapper) |
CollectionX<T> |
notNull() |
default <R> CollectionX<R> |
patternMatch(java.util.function.Function<Matchable.CheckValues<T,R>,Matchable.CheckValues<T,R>> case1,
java.util.function.Supplier<? extends R> otherwise)
Transform the elements of this Stream with a Pattern Matching case and default value
|
default CollectionX<T> |
peek(java.util.function.Consumer<? super T> c) |
CollectionX<ReactiveSeq<T>> |
permutations()
Generate the permutations based on values in the SequenceM Makes use of
Streamable to store intermediate stages in a collection
|
CollectionX<T> |
removeAll(java.lang.Iterable<T> it) |
CollectionX<T> |
removeAll(org.jooq.lambda.Seq<T> seq) |
CollectionX<T> |
removeAll(java.util.stream.Stream<T> stream) |
CollectionX<T> |
removeAll(T... values) |
CollectionX<T> |
retainAll(java.lang.Iterable<T> it) |
CollectionX<T> |
retainAll(org.jooq.lambda.Seq<T> seq) |
CollectionX<T> |
retainAll(java.util.stream.Stream<T> stream) |
CollectionX<T> |
retainAll(T... values) |
CollectionX<T> |
reverse() |
CollectionX<T> |
scanLeft(Monoid<T> monoid)
Scan left using supplied Monoid
|
<U> CollectionX<U> |
scanLeft(U seed,
java.util.function.BiFunction<U,? super T,U> function)
Scan left
|
CollectionX<T> |
scanRight(Monoid<T> monoid)
Scan right
|
<U> CollectionX<U> |
scanRight(U identity,
java.util.function.BiFunction<? super T,U,U> combiner)
Scan right
|
default T |
single()
//1
ReactiveSeq.of(1).single();
//UnsupportedOperationException
ReactiveSeq.of().single();
//UnsupportedOperationException
ReactiveSeq.of(1,2,3).single();
|
default T |
single(java.util.function.Predicate<? super T> predicate) |
default java.util.Optional<T> |
singleOptional()
//Optional[1]
ReactiveSeq.of(1).singleOptional();
//Optional.empty
ReactiveSeq.of().singleOpional();
//Optional.empty
ReactiveSeq.of(1,2,3).singleOptional();
|
CollectionX<T> |
skip(long num)
assertThat(ReactiveSeq.of(4,3,6,7).skip(2).toList(),equalTo(Arrays.asList(6,7))); |
CollectionX<T> |
slice(long from,
long to) |
CollectionX<ListX<T>> |
sliding(int windowSize)
Create a sliding view over this Sequence
|
CollectionX<ListX<T>> |
sliding(int windowSize,
int increment)
Create a sliding view over this Sequence
|
CollectionX<T> |
sorted()
assertThat(ReactiveSeq.of(4,3,6,7)).sorted().toList(),equalTo(Arrays.asList(3,4,6,7))); |
CollectionX<T> |
sorted(java.util.Comparator<? super T> c)
assertThat(ReactiveSeq.of(4,3,6,7).sorted((a,b) -> b-a).toList(),equalTo(Arrays.asList(7,6,4,3)));
|
<U extends java.lang.Comparable<? super U>> |
sorted(java.util.function.Function<? super T,? extends U> function) |
default ReactiveSeq<T> |
stream() |
CollectionX<T> |
takeRight(int num) |
CollectionX<T> |
takeUntil(java.util.function.Predicate<? super T> p) |
CollectionX<T> |
takeWhile(java.util.function.Predicate<? super T> p) |
<R> CollectionX<R> |
trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Performs a map operation that can call a recursive method without running out of stack space
|
<U> CollectionX<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(java.lang.Iterable<U> other) |
<U,R> CollectionX<R> |
zip(java.lang.Iterable<U> other,
java.util.function.BiFunction<? super T,? super U,? extends R> zipper) |
<U> CollectionX<org.jooq.lambda.tuple.Tuple2<T,U>> |
zipStream(java.util.stream.Stream<U> other)
Zip 2 streams into one
|
CollectionX<org.jooq.lambda.tuple.Tuple2<T,java.lang.Long>> |
zipWithIndex()
Add an index to the current Stream
|
xMatchfixedDelay, onePer, xPerofTypeap1, ap2, ap3, ap4, ap5, applicativesflatMapPublisher, flatMapPublisher, flatMapPublisher, mergePublisher, mergePublisher, unitIteratoradd, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, toArray, toArrayallMatch, anyMatch, avg, avg, avgDouble, avgInt, avgLong, collect, count, count, countDistinct, countDistinct, countDistinctBy, countDistinctBy, max, max, max, max, maxBy, maxBy, median, median, medianBy, medianBy, min, min, min, min, minBy, minBy, mode, noneMatch, percentile, percentile, percentileBy, percentileBy, sum, sum, sumDouble, sumInt, sumLong, toCollection, toList, toList, toMap, toSet, toSet, toString, toStringstatic <T> CollectionX<T> fromCollection(java.util.Collection<T> col)
default ReactiveSeq<T> stream()
stream in interface java.util.Collection<T>stream in interface ConvertableSequence<T>stream in interface Foldable<T>stream in interface IterableCollectable<T>stream in interface IterableFunctor<T>stream in interface Traversable<T>default CyclopsCollectable<T> collectable()
CyclopsCollectablecollectable in interface CyclopsCollectable<T>collectable in interface IterableFunctor<T>default java.util.Optional<T> getAtIndex(int index)
default HeadAndTail<T> headAndTail()
Traversable
{
@code
SequenceM<String> helloWorld = ReactiveSeq.of("hello", "world", "last");
HeadAndTail<String> headAndTail = helloWorld.headAndTail();
String head = headAndTail.head();
assertThat(head, equalTo("hello"));
SequenceM<String> tail = headAndTail.tail();
assertThat(tail.headAndTail().head(), equalTo("world"));
}
headAndTail in interface Traversable<T>default T head()
<T1> CollectionX<T1> from(java.util.Collection<T1> c)
CollectionX<T> reverse()
reverse in interface Traversable<T>default T single()
//1
ReactiveSeq.of(1).single();
//UnsupportedOperationException
ReactiveSeq.of().single();
//UnsupportedOperationException
ReactiveSeq.of(1,2,3).single();
single in interface Traversable<T>default T single(java.util.function.Predicate<? super T> predicate)
single in interface Traversable<T>default java.util.Optional<T> singleOptional()
//Optional[1]
ReactiveSeq.of(1).singleOptional();
//Optional.empty
ReactiveSeq.of().singleOpional();
//Optional.empty
ReactiveSeq.of(1,2,3).singleOptional();
singleOptional in interface Traversable<T>default java.util.Optional<T> findFirst()
findFirst in interface Traversable<T>
ReactiveSeq.of(1,2,3,4,5).filter(it -> it <3).findFirst().get();
//3
(deterministic)default java.util.Optional<T> findAny()
findAny in interface Traversable<T>
ReactiveSeq.of(1,2,3,4,5).filter(it -> it <3).findAny().get();
//3
(non-deterministic)default <K> MapX<K,java.util.List<T>> groupBy(java.util.function.Function<? super T,? extends K> classifier)
Traversable
{
@code
Map<Integer, List<Integer>> map1 = of(1, 2, 3, 4).groupBy(i -> i % 2);
assertEquals(asList(2, 4), map1.get(0));
assertEquals(asList(1, 3), map1.get(1));
assertEquals(2, map1.size());
}
groupBy in interface Traversable<T>CollectionX<T> filter(java.util.function.Predicate<? super T> pred)
filter in interface Filterable<T><R> CollectionX<R> map(java.util.function.Function<? super T,? extends R> mapper)
<R> CollectionX<R> flatMap(java.util.function.Function<? super T,? extends java.lang.Iterable<? extends R>> mapper)
CollectionX<T> limit(long num)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).limit(2).toList(),equalTo(Arrays.asList(4,3));
limit in interface Traversable<T>num - Limit element size to numCollectionX<T> skip(long num)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).skip(2).toList(),equalTo(Arrays.asList(6,7)));
skip in interface Traversable<T>num - Number of elemenets to skipCollectionX<T> takeWhile(java.util.function.Predicate<? super T> p)
takeWhile in interface Traversable<T>CollectionX<T> dropWhile(java.util.function.Predicate<? super T> p)
dropWhile in interface Traversable<T>CollectionX<T> takeUntil(java.util.function.Predicate<? super T> p)
takeUntil in interface Traversable<T>CollectionX<T> dropUntil(java.util.function.Predicate<? super T> p)
dropUntil in interface Traversable<T>CollectionX<T> dropRight(int num)
dropRight in interface Traversable<T>CollectionX<T> takeRight(int num)
takeRight in interface Traversable<T>default CollectionX<T> peek(java.util.function.Consumer<? super T> c)
CollectionX<ListX<T>> grouped(int groupSize)
Traversable
{
@code
List<List<Integer>> list = ReactiveSeq.of(1, 2, 3, 4, 5, 6).grouped(3).collect(Collectors.toList());
assertThat(list.get(0), hasItems(1, 2, 3));
assertThat(list.get(1), hasItems(4, 5, 6));
}
grouped in interface Traversable<T>groupSize - Size of each Group<K,A,D> CollectionX<org.jooq.lambda.tuple.Tuple2<K,D>> grouped(java.util.function.Function<? super T,? extends K> classifier, java.util.stream.Collector<? super T,A,D> downstream)
grouped in interface Traversable<T><K> CollectionX<org.jooq.lambda.tuple.Tuple2<K,org.jooq.lambda.Seq<T>>> grouped(java.util.function.Function<? super T,? extends K> classifier)
grouped in interface Traversable<T>CollectionX<T> combine(java.util.function.BiPredicate<? super T,? super T> predicate, java.util.function.BinaryOperator<T> op)
Traversable
ReactiveSeq.of(1,1,2,3)
.combine((a, b)->a.equals(b),Semigroups.intSum)
.toListX()
//ListX(3,4)
combine in interface Traversable<T>predicate - Test to see if two neighbours should be joinedop - Reducer to combine neighbours<U> CollectionX<org.jooq.lambda.tuple.Tuple2<T,U>> zip(java.lang.Iterable<U> other)
<U,R> CollectionX<R> zip(java.lang.Iterable<U> other, java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
zip in interface Traversable<T><U> CollectionX<org.jooq.lambda.tuple.Tuple2<T,U>> zipStream(java.util.stream.Stream<U> other)
Traversable
{
@code
List<Tuple2<Integer, String>> list = of(1, 2).zip(of("a", "b", "c", "d")).toList();
// [[1,"a"],[2,"b"]]
}
zipStream in interface Traversable<T>CollectionX<org.jooq.lambda.tuple.Tuple2<T,java.lang.Long>> zipWithIndex()
Traversable
assertEquals(asList(new Tuple2("a", 0L), new Tuple2("b", 1L)), of("a", "b").zipWithIndex().toList());
zipWithIndex in interface Traversable<T>CollectionX<ListX<T>> sliding(int windowSize)
Traversable
{
@code
List<List<Integer>> list = ReactiveSeq.of(1, 2, 3, 4, 5, 6).sliding(2).collect(Collectors.toList());
assertThat(list.get(0), hasItems(1, 2));
assertThat(list.get(1), hasItems(2, 3));
}
sliding in interface Traversable<T>windowSize - Size of sliding windowCollectionX<ListX<T>> sliding(int windowSize, int increment)
Traversable
{
@code
List<List<Integer>> list = ReactiveSeq.of(1, 2, 3, 4, 5, 6).sliding(3, 2).collect(Collectors.toList());
assertThat(list.get(0), hasItems(1, 2, 3));
assertThat(list.get(1), hasItems(3, 4, 5));
}
sliding in interface Traversable<T>windowSize - number of elements in each batchincrement - for each windowCollectionX<T> scanLeft(Monoid<T> monoid)
Traversable
assertEquals(asList("", "a", "ab", "abc"),ReactiveSeq.of("a", "b", "c")
.scanLeft(Reducers.toString("")).toList());
scanLeft in interface Traversable<T><U> CollectionX<U> scanLeft(U seed, java.util.function.BiFunction<U,? super T,U> function)
Traversable
assertThat(of("a", "b", "c").scanLeft("", String::concat).toList().size(),
is(4));
scanLeft in interface Traversable<T>CollectionX<T> scanRight(Monoid<T> monoid)
Traversable
assertThat(of("a", "b", "c").scanRight(Monoid.of("", String::concat)).toList().size(),
is(asList("", "c", "bc", "abc").size()));
scanRight in interface Traversable<T><U> CollectionX<U> scanRight(U identity, java.util.function.BiFunction<? super T,U,U> combiner)
Traversable
assertThat(of("a", "ab", "abc").map(str->str.length()).scanRight(0, (t, u) -> u + t).toList().size(),
is(asList(0, 3, 5, 6).size()));
scanRight in interface Traversable<T>CollectionX<T> distinct()
distinct in interface Traversable<T>CollectionX<T> sorted()
Traversable
assertThat(ReactiveSeq.of(4,3,6,7)).sorted().toList(),equalTo(Arrays.asList(3,4,6,7)));
sorted in interface Traversable<T>CollectionX<T> removeAll(java.util.stream.Stream<T> stream)
removeAll in interface IterableFilterable<T>CollectionX<T> removeAll(java.lang.Iterable<T> it)
removeAll in interface IterableFilterable<T>CollectionX<T> removeAll(org.jooq.lambda.Seq<T> seq)
CollectionX<T> removeAll(T... values)
removeAll in interface IterableFilterable<T>CollectionX<T> retainAll(java.lang.Iterable<T> it)
retainAll in interface IterableFilterable<T>CollectionX<T> retainAll(org.jooq.lambda.Seq<T> seq)
CollectionX<T> retainAll(java.util.stream.Stream<T> stream)
retainAll in interface IterableFilterable<T>CollectionX<T> retainAll(T... values)
retainAll in interface IterableFilterable<T>CollectionX<T> filterNot(java.util.function.Predicate<? super T> fn)
filterNot in interface Filterable<T>CollectionX<T> notNull()
notNull in interface Filterable<T><R> CollectionX<R> trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
ReactiveSeq.of(10,20,30,40)
.trampoline(i-> fibonacci(i))
.forEach(System.out::println);
Trampoline<Long> fibonacci(int i){
return fibonacci(i,1,0);
}
Trampoline<Long> fibonacci(int n, long a, long b) {
return n == 0 ? Trampoline.done(b) : Trampoline.more( ()->fibonacci(n-1, a+b, a));
}
55
6765
832040
102334155
ReactiveSeq.of(10_000,200_000,3_000_000,40_000_000)
.trampoline(i-> fibonacci(i))
.forEach(System.out::println);
completes successfully
trampoline in interface Functor<T>mapper - default <R1,R2,R> ReactiveSeq<R> forEach3(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1, java.util.function.Function<? super T,java.util.function.Function<? super R1,java.lang.Iterable<R2>>> stream2, java.util.function.Function<? super T,java.util.function.Function<? super R1,java.util.function.Function<? super R2,? extends R>>> yieldingFunction)
ReactiveSeq.of(1,2)
.forEach3(a->IntStream.range(10,13),
a->b->Stream.of(""+(a+b),"hello world"),
a->b->c->c+":"a+":"+b);
//SequenceM[11:1:2,hello world:1:2,14:1:4,hello world:1:4,12:1:2,hello world:1:2,15:1:5,hello world:1:5]
stream1 - Nested Stream to iterate overstream2 - Nested Stream to iterate overyieldingFunction - Function with pointers to the current element from both
Streams that generates the new elementsdefault <R1,R2,R> ReactiveSeq<R> forEach3(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1, java.util.function.Function<? super T,java.util.function.Function<? super R1,java.lang.Iterable<R2>>> stream2, java.util.function.Function<? super T,java.util.function.Function<? super R1,java.util.function.Function<? super R2,java.lang.Boolean>>> filterFunction, java.util.function.Function<? super T,java.util.function.Function<? super R1,java.util.function.Function<? super R2,? extends R>>> yieldingFunction)
ReactiveSeq.of(1,2,3)
.forEach3(a->IntStream.range(10,13),
a->b->Stream.of(""+(a+b),"hello world"),
a->b->c-> c!=3,
a->b->c->c+":"a+":"+b);
//SequenceM[11:1:2,hello world:1:2,14:1:4,hello world:1:4,12:1:2,hello world:1:2,15:1:5,hello world:1:5]
stream1 - Nested Stream to iterate overstream2 - Nested Stream to iterate overfilterFunction - Filter to apply over elements before passing non-filtered
values to the yielding functionyieldingFunction - Function with pointers to the current element from both
Streams that generates the new elementsdefault <R1,R> ReactiveSeq<R> forEach2(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1, java.util.function.Function<? super T,java.util.function.Function<? super R1,? extends R>> yieldingFunction)
ReactiveSeq.of(1,2,3)
.forEach2(a->IntStream.range(10,13),
a->b->a+b);
//SequenceM[11,14,12,15,13,16]
stream1 - Nested Stream to iterate overyieldingFunction - Function with pointers to the current element from both
Streams that generates the new elementsdefault <R1,R> ReactiveSeq<R> forEach2(java.util.function.Function<? super T,java.lang.Iterable<R1>> stream1, java.util.function.Function<? super T,java.util.function.Function<? super R1,java.lang.Boolean>> filterFunction, java.util.function.Function<? super T,java.util.function.Function<? super R1,? extends R>> yieldingFunction)
ReactiveSeq.of(1,2,3)
.forEach2(a->IntStream.range(10,13),
a->b-> a<3 && b>10,
a->b->a+b);
//SequenceM[14,15]
stream1 - Nested Stream to iterate overfilterFunction - Filter to apply over elements before passing non-filtered
values to the yielding functionyieldingFunction - Function with pointers to the current element from both
Streams that generates the new elementsCollectionX<T> slice(long from, long to)
slice in interface Traversable<T><U extends java.lang.Comparable<? super U>> CollectionX<T> sorted(java.util.function.Function<? super T,? extends U> function)
sorted in interface Traversable<T>CollectionX<T> sorted(java.util.Comparator<? super T> c)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).sorted((a,b) -> b-a).toList(),equalTo(Arrays.asList(7,6,4,3)));
sorted in interface Traversable<T>c - Compartor to sort withCollectionX<ReactiveSeq<T>> permutations()
ExtendedTraversablepermutations in interface ExtendedTraversable<T>CollectionX<ReactiveSeq<T>> combinations(int size)
ExtendedTraversable
ReactiveSeq.of(1,2,3).combinations(2)
//SequenceM[SequenceM[1,2],SequenceM[1,3],SequenceM[2,3]]
combinations in interface ExtendedTraversable<T>size - of combinationsCollectionX<ReactiveSeq<T>> combinations()
ExtendedTraversable
ReactiveSeq.of(1,2,3).combinations()
//SequenceM[SequenceM[],SequenceM[1],SequenceM[2],SequenceM[3].SequenceM[1,2],SequenceM[1,3],SequenceM[2,3]
,SequenceM[1,2,3]]
combinations in interface ExtendedTraversable<T>default <U> CollectionX<U> cast(java.lang.Class<U> type)
FunctorClassCastException.
// ClassCastException ReactiveSeq.of(1, "a", 2, "b", 3).cast(Integer.class)default <R> CollectionX<R> patternMatch(java.util.function.Function<Matchable.CheckValues<T,R>,Matchable.CheckValues<T,R>> case1, java.util.function.Supplier<? extends R> otherwise)
Functor
List<String> result = CollectionX.of(1,2,3,4)
.patternMatch(
c->c.valuesWhere(i->"even", (Integer i)->i%2==0 )
)
// CollectionX["odd","even","odd","even"]
patternMatch in interface Functor<T>case1 - Function to generate a case (or chain of cases as a single case)otherwise - Value if supplied case doesn't match