T - the type of elements held in this collectionpublic class LazyPVectorX<T> extends AbstractFluentCollectionX<T> implements PVectorX<T>, NativePlusLoop<T>
List.
This makes use of PVector (@see org.pcollections.PStack) from PCollectons. PVector is a persistent analogue of the
imperative ArrayList type.
Extended List operations execute lazily e.g.
LazyPVectorX<Integer> q = LazyPVectorX.of(1,2,3)
.map(i->i*2);
The map operation above is not executed immediately. It will only be executed when (if) the data inside the
PVector is accessed. This allows lazy operations to be chained and executed more efficiently e.g.
LazyPVectorX<Integer> q = LazyPVectorX.of(1,2,3)
.map(i->i*2);
.filter(i->i<5);
The operation above is more efficient than the equivalent operation with a PVectorX.AbstractFluentCollectionX.LazyCollection<T,C extends java.util.Collection<T>>, AbstractFluentCollectionX.PersistentLazyCollection<T,C extends java.util.Collection<T>>| Constructor and Description |
|---|
LazyPVectorX(reactor.core.publisher.Flux<T> stream,
Reducer<org.pcollections.PVector<T>> collector) |
| Modifier and Type | Method and Description |
|---|---|
void |
add(int index,
T element) |
boolean |
add(T e) |
boolean |
addAll(java.util.Collection<? extends T> c) |
boolean |
addAll(int index,
java.util.Collection<? extends T> c) |
<U> LazyPVectorX<U> |
cast(java.lang.Class<? extends U> type)
Cast all elements in a stream to a given type, possibly throwing a
ClassCastException. |
void |
clear() |
<R,A> R |
collect(java.util.stream.Collector<? super T,A,R> collector) |
LazyPVectorX<ReactiveSeq<T>> |
combinations()
Generate the combinations based on values in the ExtendedTraversable.
|
LazyPVectorX<ReactiveSeq<T>> |
combinations(int size)
Generate the combinations based on values in the ExtendedTraversable.
|
LazyPVectorX<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 and reduction operation.
|
boolean |
contains(java.lang.Object e) |
boolean |
containsAll(java.util.Collection<?> c) |
long |
count() |
LazyPVectorX<T> |
cycle(int times)
Convert to a Stream with the values repeated specified times
|
LazyPVectorX<T> |
cycle(Monoid<T> m,
int times)
Convert to a Stream with the result of a reduction operation repeated
specified times
|
LazyPVectorX<T> |
cycleUntil(java.util.function.Predicate<? super T> predicate)
Repeat in a Stream until specified predicate holds
|
LazyPVectorX<T> |
cycleWhile(java.util.function.Predicate<? super T> predicate)
Repeat in a Stream while specified predicate holds
|
LazyPVectorX<T> |
distinct() |
LazyPVectorX<T> |
dropRight(int num)
Generate a new Traversable that drops the specified number elements from the end of this Traversable
|
LazyPVectorX<T> |
dropUntil(java.util.function.Predicate<? super T> p)
Generate a new Traversable that drops elements from this Traversable until the predicate holds
|
LazyPVectorX<T> |
dropWhile(java.util.function.Predicate<? super T> p)
Generate a new Traversable that drops elements from this Traversable as long as the predicate holds
|
static <T> LazyPVectorX<T> |
empty()
List<String> empty = PVectors.empty();
//or
PVector<String> empty = PVectors.empty();
|
<R> LazyPVectorX<R> |
emptyUnit() |
boolean |
equals(java.lang.Object o) |
LazyPVectorX<T> |
filter(java.util.function.Predicate<? super T> pred)
Keep only elements for which the supplied predicates hold
e.g.
|
LazyPVectorX<T> |
filterNot(java.util.function.Predicate<? super T> fn)
Remove any elements for which the predicate holds (inverse operation to filter)
e.g.
|
<R> LazyPVectorX<R> |
flatMap(java.util.function.Function<? super T,? extends java.lang.Iterable<? extends R>> mapper)
Perform a flatMap operation on this collection.
|
reactor.core.publisher.Flux<T> |
flux()
Convert this type to a Reactor Flux
|
void |
forEach(java.util.function.Consumer<? super T> action) |
<X> LazyPVectorX<X> |
from(java.util.Collection<X> col)
Conctruct an Extended Collection from a standard Collection
|
static <T> LazyPVectorX<T> |
fromFlux(reactor.core.publisher.Flux<T> vec,
Reducer<org.pcollections.PVector<T>> collector) |
static <T> LazyPVectorX<T> |
fromIterable(java.lang.Iterable<T> it)
Construct LazyPVectorX from an Iterable
|
static <T> LazyPVectorX<T> |
fromIterable(Reducer<org.pcollections.PVector<T>> collector,
java.lang.Iterable<T> it)
Construct a LazyPVectorX from an Iterable, using the specified Collector.
|
static <T> LazyPVectorX<T> |
fromPublisher(org.reactivestreams.Publisher<? extends T> publisher)
Construct a LazyPVectorX from an Publisher
|
static <T> LazyPVectorX<T> |
fromPVector(org.pcollections.PVector<T> vec,
Reducer<org.pcollections.PVector<T>> collector) |
static <T> LazyPVectorX<T> |
fromStreamS(java.util.stream.Stream<T> stream)
Create a LazyPVectorX from a Stream
|
static <T> LazyPVectorX<T> |
generate(long limit,
java.util.function.Supplier<T> s)
Generate a LazyPVectorX from the provided Supplier up to the provided limit number of times
|
T |
get(int index) |
<K> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<K,org.jooq.lambda.Seq<T>>> |
grouped(java.util.function.Function<? super T,? extends K> classifier)
Group this Traversable by the provided classifying function and collected by the provided Collector
|
<K,A,D> LazyPVectorX<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)
Group this Traversable by the provided classifying function and collected by the provided Collector
|
LazyPVectorX<ListX<T>> |
grouped(int groupSize)
Group elements in a Stream
|
<C extends java.util.Collection<? super T>> |
grouped(int size,
java.util.function.Supplier<C> supplier)
Batch elements in a Stream by size into a collection created by the
supplied factory
|
LazyPVectorX<ListX<T>> |
groupedStatefullyUntil(java.util.function.BiPredicate<ListX<? super T>,? super T> predicate)
Create Travesable of Lists where
each List is populated while the supplied bipredicate holds.
|
LazyPVectorX<ListX<T>> |
groupedUntil(java.util.function.Predicate<? super T> predicate)
Create a Traversable batched by List, where each batch is populated until
the predicate holds
|
<C extends java.util.Collection<? super T>> |
groupedUntil(java.util.function.Predicate<? super T> predicate,
java.util.function.Supplier<C> factory)
Create a ReactiveSeq batched by a Collection, where each batch is populated
until the predicate holds
|
LazyPVectorX<ListX<T>> |
groupedWhile(java.util.function.Predicate<? super T> predicate)
Create a Traversable batched by List, where each batch is populated while
the predicate holds
|
<C extends java.util.Collection<? super T>> |
groupedWhile(java.util.function.Predicate<? super T> predicate,
java.util.function.Supplier<C> factory)
Create a SequenceM batched by a Collection, where each batch is populated
while the predicate holds
|
int |
hashCode() |
int |
indexOf(java.lang.Object o) |
LazyPVectorX<T> |
intersperse(T value)
Returns a stream with a given value interspersed between any two values
of this stream.
|
boolean |
isEmpty() |
static <T> LazyPVectorX<T> |
iterate(long limit,
T seed,
java.util.function.UnaryOperator<T> f)
Create a LazyPVectorX by iterative application of a function to an initial element up to the supplied limit number of times
|
java.util.Iterator<T> |
iterator() |
int |
lastIndexOf(java.lang.Object o) |
static <T> java.util.stream.Collector<T,?,LazyPVectorX<T>> |
lazyListXCollector() |
LazyPVectorX<T> |
limit(long num)
assertThat(ReactiveSeq.of(4,3,6,7).limit(2).toList(),equalTo(Arrays.asList(4,3)); |
LazyPVectorX<T> |
limitLast(int num)
Limit results to the last x elements in a SequenceM
|
LazyPVectorX<T> |
limitUntil(java.util.function.Predicate<? super T> p)
Take elements from the Stream until the predicate returns true, after
which all elements are excluded.
|
LazyPVectorX<T> |
limitWhile(java.util.function.Predicate<? super T> p)
Take elements from the Stream while the predicate holds, once the
predicate returns false all subsequent elements are excluded
|
java.util.ListIterator<T> |
listIterator() |
java.util.ListIterator<T> |
listIterator(int index) |
<R> LazyPVectorX<R> |
map(java.util.function.Function<? super T,? extends R> mapper)
Transform this functor using the supplied transformation function
|
LazyPVectorX<T> |
materialize() |
LazyPVectorX<T> |
minus(int i) |
LazyPVectorX<T> |
minus(java.lang.Object e)
Remove the specified element from this collection
|
LazyPVectorX<T> |
minusAll(java.util.Collection<?> list)
Remove all the specified elements from this collection
|
LazyPVectorX<T> |
minusAllLazy(java.util.Collection<?> list)
Lazily remove the elements in the supplied Collection from this Collection.
|
LazyPVectorX<T> |
minusLazy(java.lang.Object e)
Lazily remove an element from this Collection.
|
<T> Reducer<org.pcollections.PVector<T>> |
monoid() |
LazyPVectorX<T> |
notNull()
Filter elements retaining only values which are not null
|
static <T> LazyPVectorX<T> |
of(T... values)
Create a LazyPVectorX from the specified values
|
<U> LazyPVectorX<U> |
ofType(java.lang.Class<? extends U> type)
Keep only those elements in a stream that are of a given type.
|
LazyPVectorX<T> |
onEmpty(T value)
If this Container instance is empty, create a new instance containing the provided value
|
LazyPVectorX<T> |
onEmptyGet(java.util.function.Supplier<? extends T> supplier)
If this Container instance is empty, create a new instance containing the value returned from the provided Supplier
|
LazyPVectorX<T> |
onEmptySwitch(java.util.function.Supplier<? extends org.pcollections.PVector<T>> supplier)
Switch to container created by provided Supplier, if current Container empty
|
<X extends java.lang.Throwable> |
onEmptyThrow(java.util.function.Supplier<? extends X> supplier)
If this container instance is empty, throw the exception returned by the provided Supplier
|
java.util.stream.Stream<T> |
parallelStream() |
<R> LazyPVectorX<R> |
patternMatch(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> case1,
java.util.function.Supplier<? extends R> otherwise)
Transform the elements of this Stream with a Pattern Matching case and default value
|
LazyPVectorX<T> |
peek(java.util.function.Consumer<? super T> c)
Peek at the current value of this Functor, without transforming it
|
LazyPVectorX<ReactiveSeq<T>> |
permutations()
Generate the permutations based on values in the ExtendedTraversable.
|
LazyPVectorX<T> |
plus(int i,
T e) |
LazyPVectorX<T> |
plus(T e)
Add an element to this Collection
|
LazyPVectorX<T> |
plusAll(java.util.Collection<? extends T> list)
Add all supplied elements to this Collection
|
LazyPVectorX<T> |
plusAll(int i,
java.util.Collection<? extends T> list) |
LazyPVectorX<T> |
plusAllLazy(java.util.Collection<? extends T> list)
Lazily add all the elements in the supplied Collection to this Collection.
|
LazyPVectorX<T> |
plusInOrder(T e)
Add an element to the collection
|
LazyPVectorX<T> |
plusLazy(T e)
Lazily add an element to this Collection.
|
LazyPVectorX<T> |
plusLoop(int max,
java.util.function.IntFunction<T> value) |
LazyPVectorX<T> |
plusLoop(java.util.function.Supplier<java.util.Optional<T>> supplier) |
static LazyPVectorX<java.lang.Integer> |
range(int start,
int end)
Create a LazyPVectorX that contains the Integers between start and end
|
static LazyPVectorX<java.lang.Long> |
rangeLong(long start,
long end)
Create a LazyPVectorX that contains the Longs between start and end
|
T |
remove(int index) |
boolean |
remove(java.lang.Object o) |
boolean |
removeAll(java.util.Collection<?> c) |
LazyPVectorX<T> |
removeAll(java.lang.Iterable<? extends T> it)
Remove all elements in the supplied Iterable from this filterable
|
LazyPVectorX<T> |
removeAll(org.jooq.lambda.Seq<? extends T> stream)
Remove all elements from this collection that match the values in the provided Seq
|
LazyPVectorX<T> |
removeAll(java.util.stream.Stream<? extends T> stream)
Remove all elements in the supplied Stream from this filterable
|
LazyPVectorX<T> |
removeAll(T... values)
Remove all supplied elements from this filterable
|
boolean |
removeIf(java.util.function.Predicate<? super T> filter) |
void |
replaceAll(java.util.function.UnaryOperator<T> operator) |
boolean |
retainAll(java.util.Collection<?> c) |
LazyPVectorX<T> |
retainAll(java.lang.Iterable<? extends T> it)
Retain only the supplied elements in the returned Filterable
|
LazyPVectorX<T> |
retainAll(org.jooq.lambda.Seq<? extends T> stream)
Retain all elements from this collection that match the values in the provided Seq
|
LazyPVectorX<T> |
retainAll(java.util.stream.Stream<? extends T> stream)
Retain only the supplied elements in the returned Filterable
|
LazyPVectorX<T> |
retainAll(T... values)
Retain only the supplied elements in the returned Filterable
|
LazyPVectorX<T> |
reverse()
Potentially efficient Stream reversal.
|
LazyPVectorX<T> |
scanLeft(Monoid<T> monoid)
Scan left using supplied Monoid
|
<U> LazyPVectorX<U> |
scanLeft(U seed,
java.util.function.BiFunction<? super U,? super T,? extends U> function)
Scan left
|
LazyPVectorX<T> |
scanRight(Monoid<T> monoid)
Scan right
|
<U> LazyPVectorX<U> |
scanRight(U identity,
java.util.function.BiFunction<? super T,? super U,? extends U> combiner)
Scan right
|
T |
set(int index,
T element) |
LazyPVectorX<T> |
shuffle() |
LazyPVectorX<T> |
shuffle(java.util.Random random) |
static <T> LazyPVectorX<T> |
singleton(T value)
Construct a LazyPVectorX with a single value
|
int |
size() |
LazyPVectorX<T> |
skip(long num)
assertThat(ReactiveSeq.of(4,3,6,7).skip(2).toList(),equalTo(Arrays.asList(6,7))); |
LazyPVectorX<T> |
skipLast(int num)
assertThat(ReactiveSeq.of(1,2,3,4,5) .skipLast(2)
.collect(Collectors.toList()),equalTo(Arrays.asList(1,2,3)));
|
LazyPVectorX<T> |
skipUntil(java.util.function.Predicate<? super T> p)
Drop elements from the Stream until the predicate returns true, after
which all elements are included
|
LazyPVectorX<T> |
skipWhile(java.util.function.Predicate<? super T> p)
SkipWhile drops elements from the Stream while the predicate holds, once
the predicte returns true all subsequent elements are included *
|
LazyPVectorX<T> |
slice(long from,
long to) |
LazyPVectorX<ListX<T>> |
sliding(int windowSize)
Create a sliding view over this Sequence
|
LazyPVectorX<ListX<T>> |
sliding(int windowSize,
int increment)
Create a sliding view over this Sequence
|
void |
sort(java.util.Comparator<? super T> c) |
LazyPVectorX<T> |
sorted()
assertThat(ReactiveSeq.of(4,3,6,7)).sorted().toList(),equalTo(Arrays.asList(3,4,6,7))); |
LazyPVectorX<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) |
java.util.Spliterator<T> |
spliterator() |
ReactiveSeq<T> |
stream() |
<X> LazyPVectorX<X> |
stream(reactor.core.publisher.Flux<X> stream)
Create a LazyFluentCollection from a Flux.
|
LazyPVectorX<T> |
subList(int fromIndex,
int toIndex) |
LazyPVectorX<T> |
takeRight(int num)
Generate a new Traversable that takes the specified number elements from the end of this Traversable
|
LazyPVectorX<T> |
takeUntil(java.util.function.Predicate<? super T> p)
Generate a new Traversable that takes elements from this Traversable until the predicate holds
|
LazyPVectorX<T> |
takeWhile(java.util.function.Predicate<? super T> p)
Generate a new Traversable that takes elements from this Traversable as long as the predicate holds
|
java.lang.Object[] |
toArray() |
<T> T[] |
toArray(T[] a) |
LazyPVectorX<T> |
toPVector() |
java.lang.String |
toString() |
<R> LazyPVectorX<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
|
static <U,T> LazyPVectorX<T> |
unfold(U seed,
java.util.function.Function<? super U,java.util.Optional<org.jooq.lambda.tuple.Tuple2<T,U>>> unfolder)
Unfold a function into a ListX
|
<R> LazyPVectorX<R> |
unit(java.util.Collection<R> col)
Create a new instance of the same colleciton type from the supplied collection
|
<R> LazyPVectorX<R> |
unit(R value) |
<R> LazyPVectorX<R> |
unitIterator(java.util.Iterator<R> it)
Create an IterableFunctor instance of the same type from an Iterator
|
LazyPVectorX<T> |
with(int i,
T element)
PStackX methods
|
<T2,R> LazyPVectorX<R> |
zip(java.util.function.BiFunction<? super T,? super T2,? extends R> fn,
org.reactivestreams.Publisher<? extends T2> publisher)
Zip (combine) this Zippable with the supplied Publisher, using the supplied combining function
|
<U> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(java.lang.Iterable<? extends U> other)
Zip (merge) this collection with the supplied Iterable into a Colleciton containing Tuples
Each Tuple contains one element from this collection and one from the other
|
<U,R> LazyPVectorX<R> |
zip(java.lang.Iterable<? extends U> other,
java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zip (combine) this Zippable with the supplied Iterable using the supplied combining function
|
<U> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(org.jooq.lambda.Seq<? extends U> other)
Zip (combine) this Zippable with the supplied Seq combining both into a Tuple2
|
<U,R> LazyPVectorX<R> |
zip(org.jooq.lambda.Seq<? extends U> other,
java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zip (combine) this Zippable with the supplied Seq, using the supplied combining function
|
<U> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,U>> |
zip(java.util.stream.Stream<? extends U> other)
Zip 2 streams into one
|
<U,R> LazyPVectorX<R> |
zip(java.util.stream.Stream<? extends U> other,
java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zip (combine) this Zippable with the supplied Stream, using the supplied combining function
|
<S,U> LazyPVectorX<org.jooq.lambda.tuple.Tuple3<T,S,U>> |
zip3(java.util.stream.Stream<? extends S> second,
java.util.stream.Stream<? extends U> third)
zip 3 Streams into one
|
<T2,T3,T4> LazyPVectorX<org.jooq.lambda.tuple.Tuple4<T,T2,T3,T4>> |
zip4(java.util.stream.Stream<? extends T2> second,
java.util.stream.Stream<? extends T3> third,
java.util.stream.Stream<? extends T4> fourth)
zip 4 Streams into 1
|
LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,java.lang.Long>> |
zipWithIndex()
Add an index to the current Stream
|
clone, finalize, getClass, notify, notifyAll, wait, wait, waitcoflatMap, drop, fill, forEach2, forEach2, forEach3, forEach3, forEach4, forEach4, fromCollection, fromStream, narrow, take, toPVectorXcollectable, findAny, findFirst, getAtIndex, groupBy, head, headAndTail, single, single, singleOptionalgroupedStatefullyUntilT, groupedT, groupedUntilT, groupedWhileT, slidingT, slidingTfixedDelay, onePer, xPerfoldable, visitap1, ap2, ap3, ap4, ap5, applicativesflatMapPublisher, flatMapPublisher, flatMapPublisher, mergePublisher, mergePublisherendsWith, endsWithIterable, firstValue, foldRight, foldRight, foldRight, foldRightMapToType, get, join, join, join, mapReduce, mapReduce, print, print, printErr, printOut, reduce, reduce, reduce, reduce, reduce, reduce, reduce, schedule, scheduleFixedDelay, scheduleFixedRate, startsWith, startsWithIterable, toConcurrentLazyCollection, toConcurrentLazyStreamable, toLazyCollection, validate, xMatchfutureOperations, lazyOperations, subscribe, traversableseq, toCompletableFuture, toDequeX, toEvalAlways, toEvalLater, toEvalNow, toFutureStream, toFutureStream, toFutureW, toIor, toIorSecondary, toListX, toMapX, toMaybe, toOptional, toPBagX, toPMapX, toPOrderedSetX, toPQueueX, toPSetX, toPStackX, toQueueX, toSetX, toSimpleReact, toSimpleReact, toSortedSetX, toStreamable, toTry, toValue, toValueMap, toValueSet, toXor, toXorSecondaryallMatch, anyMatch, avg, avg, avgDouble, avgInt, avgLong, bitAnd, bitAnd, bitAndInt, bitAndLong, bitOr, bitOr, bitOrInt, bitOrLong, commonPrefix, commonSuffix, count, countDistinct, countDistinct, countDistinctBy, countDistinctBy, foldFuture, foldLazy, foldTry, max, max, max, max, maxAll, maxAll, maxAll, maxAll, maxAllBy, maxAllBy, maxBy, maxBy, median, median, medianBy, medianBy, min, min, min, min, minAll, minAll, minAll, minAll, minAllBy, minAllBy, minBy, minBy, mode, modeAll, modeAllBy, modeBy, noneMatch, percentile, percentile, percentileBy, percentileBy, sum, sum, sumDouble, sumInt, sumLong, toCollection, toList, toList, toMap, toMap, toSet, toSet, toString, toStringcollect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collect, collectmonopublic LazyPVectorX<T> plusLoop(int max, java.util.function.IntFunction<T> value)
plusLoop in interface LazyFluentCollectionX<T>plusLoop in interface NativePlusLoop<T>public LazyPVectorX<T> plusLoop(java.util.function.Supplier<java.util.Optional<T>> supplier)
plusLoop in interface LazyFluentCollectionX<T>plusLoop in interface NativePlusLoop<T>public static <T> LazyPVectorX<T> fromPVector(org.pcollections.PVector<T> vec, Reducer<org.pcollections.PVector<T>> collector)
public static <T> LazyPVectorX<T> fromFlux(reactor.core.publisher.Flux<T> vec, Reducer<org.pcollections.PVector<T>> collector)
public static <T> LazyPVectorX<T> fromStreamS(java.util.stream.Stream<T> stream)
stream - to construct a LazyQueueX frompublic static LazyPVectorX<java.lang.Integer> range(int start, int end)
public static LazyPVectorX<java.lang.Long> rangeLong(long start, long end)
public static <U,T> LazyPVectorX<T> unfold(U seed, java.util.function.Function<? super U,java.util.Optional<org.jooq.lambda.tuple.Tuple2<T,U>>> unfolder)
LazyPVectorX.unfold(1,i->i<=6 ? Optional.of(Tuple.tuple(i,i+1)) : Optional.empty());
//(1,2,3,4,5)
public static <T> LazyPVectorX<T> generate(long limit, java.util.function.Supplier<T> s)
public static <T> LazyPVectorX<T> iterate(long limit, T seed, java.util.function.UnaryOperator<T> f)
public static <T> java.util.stream.Collector<T,?,LazyPVectorX<T>> lazyListXCollector()
public static <T> LazyPVectorX<T> empty()
PVectorX
List<String> empty = PVectors.empty();
//or
PVector<String> empty = PVectors.empty();
@SafeVarargs public static <T> LazyPVectorX<T> of(T... values)
ListX<Integer> lazy = LazyPVectorX.of(1,2,3,4,5);
//lazily map List
ListX<String> mapped = lazy.map(i->"mapped " +i);
String value = mapped.get(0); //transformation triggered now
public static <T> LazyPVectorX<T> singleton(T value)
ListX<Integer> lazy = LazyPVectorX.singleton(5);
public static <T> LazyPVectorX<T> fromPublisher(org.reactivestreams.Publisher<? extends T> publisher)
fromPublisher in interface PVectorX<T>publisher - to construct LazyPVectorX frompublic static <T> LazyPVectorX<T> fromIterable(java.lang.Iterable<T> it)
fromIterable in interface PVectorX<T>it - to construct LazyPVectorX frompublic static <T> LazyPVectorX<T> fromIterable(Reducer<org.pcollections.PVector<T>> collector, java.lang.Iterable<T> it)
collector - To generate Lists from, this can be used to create mutable vs immutable Lists (for example), or control List type (ArrayList, LinkedList)it - Iterable to construct LazyPVectorX frompublic void forEach(java.util.function.Consumer<? super T> action)
forEach in interface java.lang.Iterable<T>public java.util.Iterator<T> iterator()
public int size()
public boolean contains(java.lang.Object e)
public boolean equals(java.lang.Object o)
public boolean isEmpty()
public int hashCode()
public java.lang.Object[] toArray()
public boolean removeAll(java.util.Collection<?> c)
public <T> T[] toArray(T[] a)
public boolean add(T e)
public boolean remove(java.lang.Object o)
public boolean containsAll(java.util.Collection<?> c)
public boolean addAll(java.util.Collection<? extends T> c)
public boolean retainAll(java.util.Collection<?> c)
public void clear()
public java.lang.String toString()
toString in class java.lang.Objectpublic <R,A> R collect(java.util.stream.Collector<? super T,A,R> collector)
collect in interface CyclopsCollectable<T>collect in interface org.jooq.lambda.Collectable<T>public long count()
count in interface CyclopsCollectable<T>count in interface org.jooq.lambda.Collectable<T>public boolean addAll(int index,
java.util.Collection<? extends T> c)
public void replaceAll(java.util.function.UnaryOperator<T> operator)
replaceAll in interface java.util.List<T>public boolean removeIf(java.util.function.Predicate<? super T> filter)
removeIf in interface java.util.Collection<T>public void sort(java.util.Comparator<? super T> c)
sort in interface java.util.List<T>public void add(int index,
T element)
public T remove(int index)
public java.util.stream.Stream<T> parallelStream()
parallelStream in interface java.util.Collection<T>public int indexOf(java.lang.Object o)
indexOf in interface java.util.List<T>public int lastIndexOf(java.lang.Object o)
lastIndexOf in interface java.util.List<T>public java.util.ListIterator<T> listIterator()
listIterator in interface java.util.List<T>public java.util.ListIterator<T> listIterator(int index)
listIterator in interface java.util.List<T>public LazyPVectorX<T> subList(int fromIndex, int toIndex)
public java.util.Spliterator<T> spliterator()
public <X> LazyPVectorX<X> stream(reactor.core.publisher.Flux<X> stream)
LazyFluentCollectionX
LazyListX<Integer> lazyInts = LazyListX.of(1,2,3);
LazyListX<String> lazyStrs = lazyInts.stream(Flux.just("hello","world"));
Calling stream(Flux) on a LazySetX results in a LazySetX etc.
The same collection / reduction method will be used in the newly created Object. I.e. Calling stream(Flux) on
a collection which as an Immutable Collector will result in an Immutable Collection.stream in interface LazyFluentCollectionX<T>stream in class AbstractFluentCollectionX<T>stream - Flux to create new collection frompublic reactor.core.publisher.Flux<T> flux()
ReactorConvertableflux in interface ReactorConvertable<T>flux in class AbstractFluentCollectionX<T>public LazyPVectorX<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 CollectionX<T>combine in interface PersistentCollectionX<T>combine in interface PVectorX<T>combine in interface Traversable<T>combine in class AbstractFluentCollectionX<T>predicate - Test to see if two neighbours should be joinedop - Reducer to combine neighbourspublic LazyPVectorX<T> reverse()
Traversable assertThat( of(1, 2, 3).reverse().toList(),
equalTo(asList(3, 2, 1))); reverse in interface CollectionX<T>reverse in interface PersistentCollectionX<T>reverse in interface PVectorX<T>reverse in interface Traversable<T>reverse in class AbstractFluentCollectionX<T>public LazyPVectorX<T> filter(java.util.function.Predicate<? super T> pred)
Filterable
of(1,2,3).filter(i->i>2);
//[3]
filter in interface CollectionX<T>filter in interface PersistentCollectionX<T>filter in interface PVectorX<T>filter in interface Filterable<T>filter in class AbstractFluentCollectionX<T>pred - to filter elements by, retaining matchespublic <R> LazyPVectorX<R> map(java.util.function.Function<? super T,? extends R> mapper)
Functor
of(1,2,3).map(i->i*2)
//[2,4,6]
map in interface CollectionX<T>map in interface PersistentCollectionX<T>map in interface PVectorX<T>map in interface Functor<T>map in interface IterableFunctor<T>map in class AbstractFluentCollectionX<T>mapper - Transformation functionpublic <R> LazyPVectorX<R> flatMap(java.util.function.Function<? super T,? extends java.lang.Iterable<? extends R>> mapper)
CollectionXflatMap in interface CollectionX<T>flatMap in interface PersistentCollectionX<T>flatMap in interface PVectorX<T>flatMap in class AbstractFluentCollectionX<T>mapper - Transformation function to be applied (and flattened)public LazyPVectorX<T> limit(long num)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).limit(2).toList(),equalTo(Arrays.asList(4,3));
limit in interface CollectionX<T>limit in interface PersistentCollectionX<T>limit in interface PVectorX<T>limit in interface Traversable<T>limit in class AbstractFluentCollectionX<T>num - Limit element size to numpublic LazyPVectorX<T> skip(long num)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).skip(2).toList(),equalTo(Arrays.asList(6,7)));
skip in interface CollectionX<T>skip in interface PersistentCollectionX<T>skip in interface PVectorX<T>skip in interface Traversable<T>skip in class AbstractFluentCollectionX<T>num - Number of elemenets to skippublic LazyPVectorX<T> takeRight(int num)
Traversable
ListX.of(1,2,3).takeRight(2);
//[2,3]
takeRight in interface CollectionX<T>takeRight in interface PersistentCollectionX<T>takeRight in interface PVectorX<T>takeRight in interface Traversable<T>takeRight in class AbstractFluentCollectionX<T>num - Take this number of elements from the end of this Traversablepublic LazyPVectorX<T> dropRight(int num)
Traversable
ListX.of(1,2,3).dropRight(2);
//[1]
dropRight in interface CollectionX<T>dropRight in interface PersistentCollectionX<T>dropRight in interface PVectorX<T>dropRight in interface Traversable<T>dropRight in class AbstractFluentCollectionX<T>num - Drop this number of elements from the end of this Traversablepublic LazyPVectorX<T> takeWhile(java.util.function.Predicate<? super T> p)
Traversable
ListX.of(1,2,3).takeWhile(i<3);
//[1,2]
takeWhile in interface CollectionX<T>takeWhile in interface PersistentCollectionX<T>takeWhile in interface PVectorX<T>takeWhile in interface Traversable<T>takeWhile in class AbstractFluentCollectionX<T>p - Predicate to determine when values should be takenpublic LazyPVectorX<T> dropWhile(java.util.function.Predicate<? super T> p)
Traversable
ListX.of(1,2,3).dropWhile(i<3);
//[3]
dropWhile in interface CollectionX<T>dropWhile in interface PersistentCollectionX<T>dropWhile in interface PVectorX<T>dropWhile in interface Traversable<T>dropWhile in class AbstractFluentCollectionX<T>p - Predicate to determine when values should be droppedpublic LazyPVectorX<T> takeUntil(java.util.function.Predicate<? super T> p)
Traversable
ListX.of(1,2,3).takeUntil(i<2);
//[1,2]
takeUntil in interface CollectionX<T>takeUntil in interface PersistentCollectionX<T>takeUntil in interface PVectorX<T>takeUntil in interface Traversable<T>takeUntil in class AbstractFluentCollectionX<T>p - Predicate to determine when values should be taken untilpublic LazyPVectorX<T> dropUntil(java.util.function.Predicate<? super T> p)
Traversable
ListX.of(1,2,3).dropUntil(i>2);
//[3]
dropUntil in interface CollectionX<T>dropUntil in interface PersistentCollectionX<T>dropUntil in interface PVectorX<T>dropUntil in interface Traversable<T>dropUntil in class AbstractFluentCollectionX<T>p - Predicate to determine when values should be droppedpublic <R> LazyPVectorX<R> trampoline(java.util.function.Function<? super T,? extends Trampoline<? extends R>> mapper)
Functor
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 CollectionX<T>trampoline in interface PersistentCollectionX<T>trampoline in interface PVectorX<T>trampoline in interface Functor<T>trampoline in class AbstractFluentCollectionX<T>mapper - TCO Transformation functionpublic LazyPVectorX<T> slice(long from, long to)
slice in interface CollectionX<T>slice in interface PersistentCollectionX<T>slice in interface PVectorX<T>slice in interface Traversable<T>slice in class AbstractFluentCollectionX<T>public LazyPVectorX<ListX<T>> grouped(int groupSize)
Traversable
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 CollectionX<T>grouped in interface PersistentCollectionX<T>grouped in interface PVectorX<T>grouped in interface Traversable<T>grouped in class AbstractFluentCollectionX<T>groupSize - Size of each Grouppublic <K,A,D> LazyPVectorX<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)
Traversablegrouped in interface CollectionX<T>grouped in interface PersistentCollectionX<T>grouped in interface PVectorX<T>grouped in interface Traversable<T>grouped in class AbstractFluentCollectionX<T>classifier - Grouping functiondownstream - Collector to create the grouping collectionpublic <K> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<K,org.jooq.lambda.Seq<T>>> grouped(java.util.function.Function<? super T,? extends K> classifier)
Traversablegrouped in interface CollectionX<T>grouped in interface PersistentCollectionX<T>grouped in interface PVectorX<T>grouped in interface Traversable<T>grouped in class AbstractFluentCollectionX<T>classifier - Grouping functionpublic <U> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,U>> zip(java.lang.Iterable<? extends U> other)
CollectionXzip in interface CollectionX<T>zip in interface PersistentCollectionX<T>zip in interface PVectorX<T>zip in interface Traversable<T>zip in interface Zippable<T>zip in class AbstractFluentCollectionX<T>other - Collection to merge with this onepublic <U,R> LazyPVectorX<R> zip(java.lang.Iterable<? extends U> other, java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zippablezip in interface CollectionX<T>zip in interface PersistentCollectionX<T>zip in interface PVectorX<T>zip in interface Traversable<T>zip in interface Zippable<T>zip in class AbstractFluentCollectionX<T>other - to zip withzipper - Zip functionpublic LazyPVectorX<ListX<T>> sliding(int windowSize)
Traversable
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 CollectionX<T>sliding in interface PersistentCollectionX<T>sliding in interface PVectorX<T>sliding in interface Traversable<T>sliding in class AbstractFluentCollectionX<T>windowSize - Size of sliding windowpublic LazyPVectorX<ListX<T>> sliding(int windowSize, int increment)
Traversable
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 CollectionX<T>sliding in interface PersistentCollectionX<T>sliding in interface PVectorX<T>sliding in interface Traversable<T>sliding in class AbstractFluentCollectionX<T>windowSize - number of elements in each batchincrement - for each windowpublic LazyPVectorX<T> scanLeft(Monoid<T> monoid)
Traversable
assertEquals(asList("", "a", "ab", "abc"),ReactiveSeq.of("a", "b", "c")
.scanLeft(Reducers.toString("")).toList());
scanLeft in interface CollectionX<T>scanLeft in interface PersistentCollectionX<T>scanLeft in interface PVectorX<T>scanLeft in interface Traversable<T>scanLeft in class AbstractFluentCollectionX<T>public <U> LazyPVectorX<U> scanLeft(U seed, java.util.function.BiFunction<? super U,? super T,? extends U> function)
Traversable
assertThat(of("a", "b", "c").scanLeft("", String::concat).toList().size(),
is(4));
scanLeft in interface CollectionX<T>scanLeft in interface PersistentCollectionX<T>scanLeft in interface PVectorX<T>scanLeft in interface Traversable<T>scanLeft in class AbstractFluentCollectionX<T>public LazyPVectorX<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 CollectionX<T>scanRight in interface PersistentCollectionX<T>scanRight in interface PVectorX<T>scanRight in interface Traversable<T>scanRight in class AbstractFluentCollectionX<T>public <U> LazyPVectorX<U> scanRight(U identity, java.util.function.BiFunction<? super T,? super U,? extends 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 CollectionX<T>scanRight in interface PersistentCollectionX<T>scanRight in interface PVectorX<T>scanRight in interface Traversable<T>scanRight in class AbstractFluentCollectionX<T>public <U extends java.lang.Comparable<? super U>> LazyPVectorX<T> sorted(java.util.function.Function<? super T,? extends U> function)
sorted in interface CollectionX<T>sorted in interface PersistentCollectionX<T>sorted in interface PVectorX<T>sorted in interface Traversable<T>sorted in class AbstractFluentCollectionX<T>public LazyPVectorX<T> plusLazy(T e)
LazyFluentCollectionXLazyFluentCollectionX.plus(Object)
LazyListX<Integer> lazy = LazyListX.of(1,2,3)
.map(i->i*2)
.plusLazy(5);
//Lazy List that will contain [2,4,6,5] when triggered
plusLazy in interface LazyFluentCollectionX<T>plusLazy in class AbstractFluentCollectionX<T>e - Element to addpublic LazyPVectorX<T> plusAllLazy(java.util.Collection<? extends T> list)
LazyFluentCollectionXLazyFluentCollectionX#plusAll(Object)
LazyListX<Integer> lazy = LazyListX.of(1,2,3)
.map(i->i*2)
.plusAllLazy(ListX.of(5,10));
//Lazy List that will contain [2,4,6,5,10] when triggered
plusAllLazy in interface LazyFluentCollectionX<T>plusAllLazy in class AbstractFluentCollectionX<T>list - Collection to addpublic LazyPVectorX<T> minusLazy(java.lang.Object e)
LazyFluentCollectionXLazyFluentCollectionX.minus(Object)
LazyListX<Integer> lazy = LazyListX.of(1,2,3)
.map(i->i*2)
.minusLazy(4);
//Lazy List that will contain [2,6] when triggered
This is an equivalent operation to filtering by equality e.g.
LazyListX<Integer> lazy = LazyListX.of(1,2,3)
.map(i->i*2)
.filter(i->i==4);
//Lazy List that will contain [2,6] when triggered
minusLazy in interface LazyFluentCollectionX<T>minusLazy in class AbstractFluentCollectionX<T>e - Element to removepublic LazyPVectorX<T> minusAllLazy(java.util.Collection<?> list)
LazyFluentCollectionXLazyFluentCollectionX.minusAll(Collection)
LazyListX<Integer> lazy = LazyListX.of(1,2,3)
.map(i->i*2)
.minusAllLazy(ListX.of(4));
//Lazy List that will contain [2,6] when triggered
This is an equivalent operation to filtering by equality e.g.
LazyListX<Integer> lazy = LazyListX.of(1,2,3)
.map(i->i*2)
.filter(i->ListX.of(4).contains(i));
//Lazy List that will contain [2,6] when triggered
minusAllLazy in interface LazyFluentCollectionX<T>minusAllLazy in class AbstractFluentCollectionX<T>list - of elements to removepublic LazyPVectorX<T> cycle(int times)
Traversable
ReactiveSeq.of(1,2,2)
.cycle(3)
.collect(Collectors.toList());
//List[1,2,2,1,2,2,1,2,2]
cycle in interface CollectionX<T>cycle in interface PersistentCollectionX<T>cycle in interface PVectorX<T>cycle in interface Traversable<T>cycle in class AbstractFluentCollectionX<T>times - Times values should be repeated within a Streampublic LazyPVectorX<T> cycle(Monoid<T> m, int times)
Traversable
List<Integer> list = ReactiveSeq.of(1,2,2))
.cycle(Reducers.toCountInt(),3)
.collect(Collectors.toList());
//List[3,3,3];
cycle in interface CollectionX<T>cycle in interface PersistentCollectionX<T>cycle in interface PVectorX<T>cycle in interface Traversable<T>cycle in class AbstractFluentCollectionX<T>m - Monoid to be used in reductiontimes - Number of times value should be repeatedpublic LazyPVectorX<T> cycleWhile(java.util.function.Predicate<? super T> predicate)
Traversable
MutableInt count = MutableInt.of(0);
ReactiveSeq.of(1, 2, 2).cycleWhile(next -> count++ < 6).collect(Collectors.toList());
// List(1,2,2,1,2,2)
cycleWhile in interface CollectionX<T>cycleWhile in interface PersistentCollectionX<T>cycleWhile in interface PVectorX<T>cycleWhile in interface Traversable<T>cycleWhile in class AbstractFluentCollectionX<T>predicate - repeat while truepublic LazyPVectorX<T> cycleUntil(java.util.function.Predicate<? super T> predicate)
Traversable
MutableInt count =MutableInt.of(0);
ReactiveSeq.of(1,2,2)
.cycleUntil(next -> count.get()>6)
.peek(i-> count.mutate(i->i+1))
.collect(Collectors.toList());
//List[1,2,2,1,2,2,1]
cycleUntil in interface CollectionX<T>cycleUntil in interface PersistentCollectionX<T>cycleUntil in interface PVectorX<T>cycleUntil in interface Traversable<T>cycleUntil in class AbstractFluentCollectionX<T>predicate - repeat while truepublic <U> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,U>> zip(org.jooq.lambda.Seq<? extends U> other)
Zippablezip in interface CollectionX<T>zip in interface PersistentCollectionX<T>zip in interface PVectorX<T>zip in interface Traversable<T>zip in interface Zippable<T>zip in class AbstractFluentCollectionX<T>other - Seq to combine withpublic <S,U> LazyPVectorX<org.jooq.lambda.tuple.Tuple3<T,S,U>> zip3(java.util.stream.Stream<? extends S> second, java.util.stream.Stream<? extends U> third)
Traversable
List<Tuple3<Integer, Integer, Character>> list = of(1, 2, 3, 4, 5, 6).zip3(of(100, 200, 300, 400), of('a', 'b', 'c')).collect(Collectors.toList());
// [[1,100,'a'],[2,200,'b'],[3,300,'c']]
zip3 in interface CollectionX<T>zip3 in interface PersistentCollectionX<T>zip3 in interface PVectorX<T>zip3 in interface Traversable<T>zip3 in class AbstractFluentCollectionX<T>public <T2,T3,T4> LazyPVectorX<org.jooq.lambda.tuple.Tuple4<T,T2,T3,T4>> zip4(java.util.stream.Stream<? extends T2> second, java.util.stream.Stream<? extends T3> third, java.util.stream.Stream<? extends T4> fourth)
Traversable
List<Tuple4<Integer, Integer, Character, String>> list = of(1, 2, 3, 4, 5, 6).zip4(of(100, 200, 300, 400), of('a', 'b', 'c'), of("hello", "world"))
.collect(Collectors.toList());
// [[1,100,'a',"hello"],[2,200,'b',"world"]]
zip4 in interface CollectionX<T>zip4 in interface PersistentCollectionX<T>zip4 in interface PVectorX<T>zip4 in interface Traversable<T>zip4 in class AbstractFluentCollectionX<T>public LazyPVectorX<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 CollectionX<T>zipWithIndex in interface PersistentCollectionX<T>zipWithIndex in interface PVectorX<T>zipWithIndex in interface Traversable<T>zipWithIndex in class AbstractFluentCollectionX<T>public LazyPVectorX<T> distinct()
distinct in interface CollectionX<T>distinct in interface PersistentCollectionX<T>distinct in interface PVectorX<T>distinct in interface Traversable<T>distinct in class AbstractFluentCollectionX<T>public LazyPVectorX<T> sorted()
Traversable
assertThat(ReactiveSeq.of(4,3,6,7)).sorted().toList(),equalTo(Arrays.asList(3,4,6,7)));
sorted in interface CollectionX<T>sorted in interface PersistentCollectionX<T>sorted in interface PVectorX<T>sorted in interface Traversable<T>sorted in class AbstractFluentCollectionX<T>public LazyPVectorX<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 CollectionX<T>sorted in interface PersistentCollectionX<T>sorted in interface PVectorX<T>sorted in interface Traversable<T>sorted in class AbstractFluentCollectionX<T>c - Compartor to sort withpublic LazyPVectorX<T> skipWhile(java.util.function.Predicate<? super T> p)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).sorted().skipWhile(i->i<6).toList(),equalTo(Arrays.asList(6,7)));
skipWhile in interface CollectionX<T>skipWhile in interface PersistentCollectionX<T>skipWhile in interface PVectorX<T>skipWhile in interface Traversable<T>skipWhile in class AbstractFluentCollectionX<T>p - Predicate to skip while truepublic LazyPVectorX<T> skipUntil(java.util.function.Predicate<? super T> p)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).skipUntil(i->i==6).toList(),equalTo(Arrays.asList(6,7)));
skipUntil in interface CollectionX<T>skipUntil in interface PersistentCollectionX<T>skipUntil in interface PVectorX<T>skipUntil in interface Traversable<T>skipUntil in class AbstractFluentCollectionX<T>p - Predicate to skip until truepublic LazyPVectorX<T> limitWhile(java.util.function.Predicate<? super T> p)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).sorted().limitWhile(i->i<6).toList(),equalTo(Arrays.asList(3,4)));
limitWhile in interface CollectionX<T>limitWhile in interface PersistentCollectionX<T>limitWhile in interface PVectorX<T>limitWhile in interface Traversable<T>limitWhile in class AbstractFluentCollectionX<T>p - Limit while predicate is truepublic LazyPVectorX<T> limitUntil(java.util.function.Predicate<? super T> p)
Traversable
assertThat(ReactiveSeq.of(4,3,6,7).limitUntil(i->i==6).toList(),equalTo(Arrays.asList(4,3)));
limitUntil in interface CollectionX<T>limitUntil in interface PersistentCollectionX<T>limitUntil in interface PVectorX<T>limitUntil in interface Traversable<T>limitUntil in class AbstractFluentCollectionX<T>p - Limit until predicate is truepublic LazyPVectorX<T> intersperse(T value)
Traversableintersperse in interface CollectionX<T>intersperse in interface PersistentCollectionX<T>intersperse in interface PVectorX<T>intersperse in interface Traversable<T>intersperse in class AbstractFluentCollectionX<T>public LazyPVectorX<T> shuffle()
shuffle in interface CollectionX<T>shuffle in interface PersistentCollectionX<T>shuffle in interface PVectorX<T>shuffle in interface Traversable<T>shuffle in class AbstractFluentCollectionX<T>public LazyPVectorX<T> skipLast(int num)
TraversableskipLast in interface CollectionX<T>skipLast in interface PersistentCollectionX<T>skipLast in interface PVectorX<T>skipLast in interface Traversable<T>skipLast in class AbstractFluentCollectionX<T>public LazyPVectorX<T> limitLast(int num)
Traversable
assertThat(ReactiveSeq.of(1,2,3,4,5)
.limitLast(2)
.collect(Collectors.toList()),equalTo(Arrays.asList(4,5)));
limitLast in interface CollectionX<T>limitLast in interface PersistentCollectionX<T>limitLast in interface PVectorX<T>limitLast in interface Traversable<T>limitLast in class AbstractFluentCollectionX<T>num - of elements to return (last elements)public LazyPVectorX<T> onEmpty(T value)
OnEmptyonEmpty in interface CollectionX<T>onEmpty in interface PersistentCollectionX<T>onEmpty in interface PVectorX<T>onEmpty in interface OnEmpty<T>onEmpty in interface Traversable<T>onEmpty in class AbstractFluentCollectionX<T>public LazyPVectorX<T> onEmptyGet(java.util.function.Supplier<? extends T> supplier)
OnEmptyonEmptyGet in interface CollectionX<T>onEmptyGet in interface PersistentCollectionX<T>onEmptyGet in interface PVectorX<T>onEmptyGet in interface OnEmpty<T>onEmptyGet in interface Traversable<T>onEmptyGet in class AbstractFluentCollectionX<T>supplier - to determine new value for containerpublic <X extends java.lang.Throwable> LazyPVectorX<T> onEmptyThrow(java.util.function.Supplier<? extends X> supplier)
OnEmptyonEmptyThrow in interface CollectionX<T>onEmptyThrow in interface PersistentCollectionX<T>onEmptyThrow in interface PVectorX<T>onEmptyThrow in interface OnEmpty<T>onEmptyThrow in interface Traversable<T>onEmptyThrow in class AbstractFluentCollectionX<T>supplier - to create exception frompublic LazyPVectorX<T> shuffle(java.util.Random random)
shuffle in interface CollectionX<T>shuffle in interface PersistentCollectionX<T>shuffle in interface PVectorX<T>shuffle in interface Traversable<T>shuffle in class AbstractFluentCollectionX<T>public <U> LazyPVectorX<U> ofType(java.lang.Class<? extends U> type)
Filterable
// (1, 2, 3) ReactiveSeq.of(1, "a", 2, "b",3).ofType(Integer.class)
ofType in interface PersistentCollectionX<T>ofType in interface PVectorX<T>ofType in interface Filterable<T>ofType in class AbstractFluentCollectionX<T>public LazyPVectorX<T> filterNot(java.util.function.Predicate<? super T> fn)
Filterable
of(1,2,3).filter(i->i>2);
//[1,2]
filterNot in interface CollectionX<T>filterNot in interface PersistentCollectionX<T>filterNot in interface PVectorX<T>filterNot in interface Filterable<T>filterNot in class AbstractFluentCollectionX<T>fn - to filter elements by, retaining matchespublic LazyPVectorX<T> notNull()
Filterable
of(1,2,null,4).nonNull();
//[1,2,4]
notNull in interface CollectionX<T>notNull in interface PersistentCollectionX<T>notNull in interface PVectorX<T>notNull in interface Filterable<T>notNull in class AbstractFluentCollectionX<T>public LazyPVectorX<T> removeAll(java.util.stream.Stream<? extends T> stream)
IterableFilterableremoveAll in interface CollectionX<T>removeAll in interface PersistentCollectionX<T>removeAll in interface PVectorX<T>removeAll in interface IterableFilterable<T>removeAll in class AbstractFluentCollectionX<T>stream - of elements to removepublic LazyPVectorX<T> removeAll(org.jooq.lambda.Seq<? extends T> stream)
CollectionXremoveAll in interface CollectionX<T>removeAll in interface PersistentCollectionX<T>removeAll in interface PVectorX<T>removeAll in class AbstractFluentCollectionX<T>stream - Stream of values to removepublic LazyPVectorX<T> removeAll(java.lang.Iterable<? extends T> it)
IterableFilterableremoveAll in interface CollectionX<T>removeAll in interface PersistentCollectionX<T>removeAll in interface PVectorX<T>removeAll in interface IterableFilterable<T>removeAll in class AbstractFluentCollectionX<T>it - an Iterable of elements to removepublic LazyPVectorX<T> removeAll(T... values)
IterableFilterableremoveAll in interface CollectionX<T>removeAll in interface PersistentCollectionX<T>removeAll in interface PVectorX<T>removeAll in interface IterableFilterable<T>removeAll in class AbstractFluentCollectionX<T>values - to removepublic LazyPVectorX<T> retainAll(java.lang.Iterable<? extends T> it)
IterableFilterableretainAll in interface CollectionX<T>retainAll in interface PersistentCollectionX<T>retainAll in interface PVectorX<T>retainAll in interface IterableFilterable<T>retainAll in class AbstractFluentCollectionX<T>it - Iterable of elements to retainpublic LazyPVectorX<T> retainAll(java.util.stream.Stream<? extends T> stream)
IterableFilterableretainAll in interface CollectionX<T>retainAll in interface PersistentCollectionX<T>retainAll in interface PVectorX<T>retainAll in interface IterableFilterable<T>retainAll in class AbstractFluentCollectionX<T>stream - of elements to retainpublic LazyPVectorX<T> retainAll(org.jooq.lambda.Seq<? extends T> stream)
CollectionXretainAll in interface CollectionX<T>retainAll in interface PersistentCollectionX<T>retainAll in interface PVectorX<T>retainAll in class AbstractFluentCollectionX<T>stream - Stream of values to retainpublic LazyPVectorX<T> retainAll(T... values)
IterableFilterableretainAll in interface CollectionX<T>retainAll in interface PersistentCollectionX<T>retainAll in interface PVectorX<T>retainAll in interface IterableFilterable<T>retainAll in class AbstractFluentCollectionX<T>values - elements to retainpublic <U> LazyPVectorX<U> cast(java.lang.Class<? extends U> type)
FunctorClassCastException.
// ClassCastException ReactiveSeq.of(1, "a", 2, "b", 3).cast(Integer.class)cast in interface CollectionX<T>cast in interface PersistentCollectionX<T>cast in interface PVectorX<T>cast in interface Functor<T>cast in class AbstractFluentCollectionX<T>public <R> LazyPVectorX<R> patternMatch(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<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 CollectionX<T>patternMatch in interface PersistentCollectionX<T>patternMatch in interface PVectorX<T>patternMatch in interface Functor<T>patternMatch in class AbstractFluentCollectionX<T>case1 - Function to generate a case (or chain of cases as a single case)otherwise - Value if supplied case doesn't matchpublic LazyPVectorX<ReactiveSeq<T>> permutations()
ExtendedTraversablepermutations in interface CollectionX<T>permutations in interface PersistentCollectionX<T>permutations in interface PVectorX<T>permutations in interface ExtendedTraversable<T>permutations in class AbstractFluentCollectionX<T>public LazyPVectorX<ReactiveSeq<T>> combinations(int size)
ExtendedTraversable
ExtendedTraversable<Integer> stream = ReactiveSeq.of(1,2,3);
stream.combinations(2)
//ReactiveSeq[ReactiveSeq[1,2],ReactiveSeq[1,3],ReactiveSeq[2,3]]
combinations in interface CollectionX<T>combinations in interface PersistentCollectionX<T>combinations in interface PVectorX<T>combinations in interface ExtendedTraversable<T>combinations in class AbstractFluentCollectionX<T>size - of combinationspublic LazyPVectorX<ReactiveSeq<T>> combinations()
ExtendedTraversable
ReactiveSeq.of(1,2,3).combinations()
//ReactiveSeq[ReactiveSeq[],ReactiveSeq[1],ReactiveSeq[2],ReactiveSeq[3].ReactiveSeq[1,2],ReactiveSeq[1,3],ReactiveSeq[2,3]
,ReactiveSeq[1,2,3]]
combinations in interface CollectionX<T>combinations in interface PersistentCollectionX<T>combinations in interface PVectorX<T>combinations in interface ExtendedTraversable<T>combinations in class AbstractFluentCollectionX<T>public <C extends java.util.Collection<? super T>> LazyPVectorX<C> grouped(int size, java.util.function.Supplier<C> supplier)
Traversable
assertThat(ReactiveSeq.of(1,1,1,1,1,1)
.batchBySize(3,()->new TreeSet<>())
.toList()
.get(0)
.size(),is(1));
grouped in interface CollectionX<T>grouped in interface PersistentCollectionX<T>grouped in interface PVectorX<T>grouped in interface Traversable<T>grouped in class AbstractFluentCollectionX<T>size - batch sizesupplier - Collection factorypublic LazyPVectorX<ListX<T>> groupedUntil(java.util.function.Predicate<? super T> predicate)
Traversable
assertThat(ReactiveSeq.of(1,2,3,4,5,6)
.groupedUntil(i->i%3==0)
.toList()
.size(),equalTo(2));
groupedUntil in interface CollectionX<T>groupedUntil in interface PersistentCollectionX<T>groupedUntil in interface PVectorX<T>groupedUntil in interface Traversable<T>groupedUntil in class AbstractFluentCollectionX<T>predicate - Batch until predicate holds, then open next batchpublic LazyPVectorX<ListX<T>> groupedWhile(java.util.function.Predicate<? super T> predicate)
Traversable
assertThat(ReactiveSeq.of(1,2,3,4,5,6)
.groupedWhile(i->i%3!=0)
.toList().size(),equalTo(2));
groupedWhile in interface CollectionX<T>groupedWhile in interface PersistentCollectionX<T>groupedWhile in interface PVectorX<T>groupedWhile in interface Traversable<T>groupedWhile in class AbstractFluentCollectionX<T>predicate - Batch while predicate holds, then open next batchpublic <C extends java.util.Collection<? super T>> LazyPVectorX<C> groupedWhile(java.util.function.Predicate<? super T> predicate, java.util.function.Supplier<C> factory)
Traversable
assertThat(ReactiveSeq.of(1,2,3,4,5,6)
.batchWhile(i->i%3!=0)
.toList()
.size(),equalTo(2));
groupedWhile in interface CollectionX<T>groupedWhile in interface PersistentCollectionX<T>groupedWhile in interface PVectorX<T>groupedWhile in interface Traversable<T>groupedWhile in class AbstractFluentCollectionX<T>predicate - Batch while predicate holds, then open next batchfactory - Collection factorypublic <C extends java.util.Collection<? super T>> LazyPVectorX<C> groupedUntil(java.util.function.Predicate<? super T> predicate, java.util.function.Supplier<C> factory)
Traversable
ReactiveSeq.of(1,2,3,4,5,6)
.groupedUntil(i->i%3!=0)
.toList()
//2
groupedUntil in interface CollectionX<T>groupedUntil in interface PersistentCollectionX<T>groupedUntil in interface PVectorX<T>groupedUntil in interface Traversable<T>groupedUntil in class AbstractFluentCollectionX<T>predicate - Batch until predicate holds, then open next batchfactory - Collection factorypublic LazyPVectorX<T> with(int i, T element)
public LazyPVectorX<ListX<T>> groupedStatefullyUntil(java.util.function.BiPredicate<ListX<? super T>,? super T> predicate)
Traversable
assertThat(ReactiveSeq.of(1,2,3,4,5,6)
.groupedStatefullyUntil((s,i)->s.contains(4) ? true : false)
.toList().size(),equalTo(5));
groupedStatefullyUntil in interface CollectionX<T>groupedStatefullyUntil in interface PersistentCollectionX<T>groupedStatefullyUntil in interface PVectorX<T>groupedStatefullyUntil in interface Traversable<T>groupedStatefullyUntil in class AbstractFluentCollectionX<T>predicate - Window while truepublic LazyPVectorX<T> peek(java.util.function.Consumer<? super T> c)
Functor
of(1,2,3).map(System.out::println)
1
2
3
peek in interface CollectionX<T>peek in interface Functor<T>peek in class AbstractFluentCollectionX<T>c - Consumer that recieves each element from this Functorpublic <U,R> LazyPVectorX<R> zip(org.jooq.lambda.Seq<? extends U> other, java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zippablezip in interface CollectionX<T>zip in interface PersistentCollectionX<T>zip in interface PVectorX<T>zip in interface Traversable<T>zip in interface Zippable<T>zip in class AbstractFluentCollectionX<T>other - Seq to combine withzipper - Zip / combining functionpublic <U,R> LazyPVectorX<R> zip(java.util.stream.Stream<? extends U> other, java.util.function.BiFunction<? super T,? super U,? extends R> zipper)
Zippablezip in interface CollectionX<T>zip in interface PersistentCollectionX<T>zip in interface PVectorX<T>zip in interface Traversable<T>zip in interface Zippable<T>zip in class AbstractFluentCollectionX<T>other - Stream to combine withzipper - Zip / combining functionpublic <U> LazyPVectorX<org.jooq.lambda.tuple.Tuple2<T,U>> zip(java.util.stream.Stream<? extends U> other)
Traversable
List<Tuple2<Integer, String>> list = of(1, 2).zip(of("a", "b", "c", "d")).toList();
// [[1,"a"],[2,"b"]]
zip in interface CollectionX<T>zip in interface PersistentCollectionX<T>zip in interface PVectorX<T>zip in interface Traversable<T>zip in interface Zippable<T>zip in class AbstractFluentCollectionX<T>other - Stream to combine withpublic <T2,R> LazyPVectorX<R> zip(java.util.function.BiFunction<? super T,? super T2,? extends R> fn, org.reactivestreams.Publisher<? extends T2> publisher)
Zippablepublic LazyPVectorX<T> onEmptySwitch(java.util.function.Supplier<? extends org.pcollections.PVector<T>> supplier)
OnEmptySwitch
ListX.empty().onEmptySwitch(()->ListX.of(1));
onEmptySwitch in interface PVectorX<T>onEmptySwitch in interface OnEmptySwitch<T,org.pcollections.PVector<T>>supplier - to create replacement containerpublic <R> LazyPVectorX<R> unit(java.util.Collection<R> col)
FluentCollectionXunit in interface FluentCollectionX<T>unit in interface PersistentCollectionX<T>unit in interface PVectorX<T>unit in interface LazyFluentCollectionX<T>col - Collection data to populate the new collectionpublic <R> LazyPVectorX<R> unit(R value)
public <R> LazyPVectorX<R> unitIterator(java.util.Iterator<R> it)
IterableFunctor
ReactiveSeq<Integer> newSeq = seq.unitIterator(myIterator);
unitIterator in interface PVectorX<T>unitIterator in interface IterableFunctor<T>unitIterator in class AbstractFluentCollectionX<T>it - Iterator to create new IterableFunctor frompublic <R> LazyPVectorX<R> emptyUnit()
public LazyPVectorX<T> toPVector()
public LazyPVectorX<T> plusInOrder(T e)
FluentCollectionXplusInOrder in interface FluentCollectionX<T>plusInOrder in interface PersistentCollectionX<T>plusInOrder in interface PVectorX<T>plusInOrder in interface LazyFluentCollectionX<T>e - Element to addpublic ReactiveSeq<T> stream()
stream in interface CollectionX<T>stream in interface PersistentCollectionX<T>stream in interface ExtendedTraversable<T>stream in interface Foldable<T>stream in interface IterableFunctor<T>stream in interface Sequential<T>stream in interface ConvertableSequence<T>stream in interface TransformerTraversable<T>stream in interface Traversable<T>stream in interface java.util.Collection<T>public <X> LazyPVectorX<X> from(java.util.Collection<X> col)
CollectionXfrom in interface CollectionX<T>from in interface PersistentCollectionX<T>from in interface PVectorX<T>from in class AbstractFluentCollectionX<T>col - Collection to extendpublic <T> Reducer<org.pcollections.PVector<T>> monoid()
public LazyPVectorX<T> plus(T e)
FluentCollectionXplus in interface FluentCollectionX<T>plus in interface PVectorX<T>plus in interface LazyFluentCollectionX<T>plus in interface org.pcollections.PCollection<T>plus in interface org.pcollections.PSequence<T>plus in interface org.pcollections.PVector<T>plus in class AbstractFluentCollectionX<T>e - Element to addpublic LazyPVectorX<T> plus(int i, T e)
public LazyPVectorX<T> minus(java.lang.Object e)
FluentCollectionXminus in interface FluentCollectionX<T>minus in interface PVectorX<T>minus in interface LazyFluentCollectionX<T>minus in interface org.pcollections.PCollection<T>minus in interface org.pcollections.PSequence<T>minus in interface org.pcollections.PVector<T>minus in class AbstractFluentCollectionX<T>e - Element to removepublic LazyPVectorX<T> plusAll(java.util.Collection<? extends T> list)
FluentCollectionXplusAll in interface FluentCollectionX<T>plusAll in interface PVectorX<T>plusAll in interface LazyFluentCollectionX<T>plusAll in interface org.pcollections.PCollection<T>plusAll in interface org.pcollections.PSequence<T>plusAll in interface org.pcollections.PVector<T>plusAll in class AbstractFluentCollectionX<T>list - of elements to addpublic LazyPVectorX<T> plusAll(int i, java.util.Collection<? extends T> list)
public LazyPVectorX<T> minusAll(java.util.Collection<?> list)
FluentCollectionXminusAll in interface FluentCollectionX<T>minusAll in interface PVectorX<T>minusAll in interface LazyFluentCollectionX<T>minusAll in interface org.pcollections.PCollection<T>minusAll in interface org.pcollections.PSequence<T>minusAll in interface org.pcollections.PVector<T>minusAll in class AbstractFluentCollectionX<T>list - of elements to removepublic LazyPVectorX<T> minus(int i)
public LazyPVectorX<T> materialize()
materialize in interface LazyFluentCollectionX<T>