public class FutureW<T> extends java.lang.Object implements ConvertableFunctor<T>, Applicativable<T>, MonadicValue1<T>, FlatMap<T>, Filterable<T>
Applicativable.Applicatives, Applicativable.SemigroupApplyer<T>
Value.ValueImpl<T>
Convertable.SupplierToConvertable<T>
Constructor and Description |
---|
FutureW() |
Modifier and Type | Method and Description |
---|---|
static <T,R> FutureW<R> |
accumulate(CollectionX<FutureW<T>> fts,
java.util.function.Function<? super T,R> mapper,
Semigroup<R> reducer) |
static <T,R> FutureW<R> |
accumulate(CollectionX<FutureW<T>> fts,
Reducer<R> reducer) |
static <T> FutureW<T> |
accumulate(CollectionX<FutureW<T>> fts,
Semigroup<T> reducer) |
<U> FutureW<U> |
cast(java.lang.Class<? extends U> type)
Cast all elements in a stream to a given type, possibly throwing a
ClassCastException . |
<R> FutureW<R> |
coflatMap(java.util.function.Function<? super MonadicValue<T>,R> mapper) |
FutureW<T> |
combine(Monoid<T> monoid,
MonadicValue<? extends T> v2)
Eagerly combine two MonadicValues using the supplied monoid
|
static <T> FutureW<T> |
empty() |
Maybe<T> |
filter(java.util.function.Predicate<? super T> fn)
Keep only elements for which the supplied predicates hold
e.g.
|
Maybe<T> |
filterNot(java.util.function.Predicate<? super T> fn)
Remove any elements for which the predicate holds (inverse operation to filter)
e.g.
|
<R> FutureW<R> |
flatMap(java.util.function.Function<? super T,? extends MonadicValue<? extends R>> mapper) |
<R> FutureW<R> |
flatMapCf(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<? extends R>> mapper) |
<R> FutureW<R> |
flatten() |
static <T> FutureW<T> |
fromIterable(java.lang.Iterable<T> iterable) |
T |
get() |
boolean |
isFailed() |
boolean |
isSuccess() |
java.util.Iterator<T> |
iterator() |
<R> FutureW<R> |
map(java.util.function.Function<? super T,? extends R> fn)
Transform this functor using the supplied transformation function
|
<R> Eval<R> |
matches(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> secondary,
java.util.function.Function<Matchable.CheckValue1<java.lang.Throwable,R>,Matchable.CheckValue1<java.lang.Throwable,R>> primary,
java.util.function.Supplier<? extends R> otherwise) |
java.lang.String |
mkString() |
FutureW<MonadicValue<T>> |
nest() |
Maybe<T> |
notNull()
Filter elements retaining only values which are not null
|
static <T> FutureW<T> |
of(java.util.concurrent.CompletableFuture<T> f) |
static <T> FutureW<T> |
ofError(java.lang.Throwable error) |
static <T> FutureW<T> |
ofResult(T result) |
static <T> FutureW<T> |
ofSupplier(java.util.function.Supplier<T> s) |
<U> Maybe<U> |
ofType(java.lang.Class<? extends U> type)
Keep only those elements in a stream that are of a given type.
|
<R> FutureW<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
|
FutureW<T> |
peek(java.util.function.Consumer<? super T> c)
Peek at the current value of this Functor, without transforming it
|
static <T> FutureW<ListX<T>> |
sequence(CollectionX<FutureW<T>> fts) |
ReactiveSeq<T> |
stream() |
java.util.concurrent.CompletableFuture<T> |
toCompletableFuture() |
java.util.concurrent.CompletableFuture<T> |
toCompletableFutureAsync() |
java.util.concurrent.CompletableFuture<T> |
toCompletableFutureAsync(java.util.concurrent.Executor exec) |
FutureW<T> |
toFutureW() |
Ior<java.lang.Throwable,T> |
toIor() |
java.util.Optional<T> |
toOptional() |
java.lang.String |
toString() |
Xor<java.lang.Throwable,T> |
toXor() |
<R> FutureW<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
|
<T> FutureW<T> |
unit(T unit) |
<R> FutureW<R> |
visit(java.util.function.Function<? super T,R> success,
java.util.function.Function<java.lang.Throwable,R> failure) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
ap, ap, ap1, ap2, ap3, ap4, ap5
anyM
isPresent
fold, fold, generate, iterate, mapReduce, newSubscriber, of, subscribe, test, toDequeX, toEvalAlways, toEvalLater, toEvalNow, toFeatureToggle, toFutureStream, toFutureStream, toLazyImmutable, toListX, toMaybe, toMutable, toPBagX, toPOrderedSetX, toPQueueX, toPSetX, toPStackX, toPVectorX, toQueueX, toSetX, toSimpleReact, toSimpleReact, toSortedSetX, toTry, toTry, toTry, toXor, unapply, visit
endsWith, endsWithIterable, findAny, findFirst, firstValue, foldable, foldRight, foldRight, foldRight, foldRightMapToType, get, groupBy, headAndTail, join, join, join, mapReduce, print, print, printErr, printOut, reduce, reduce, reduce, reduce, reduce, reduce, reduce, schedule, scheduleFixedDelay, scheduleFixedRate, single, single, singleOptional, startsWith, startsWithIterable, toConcurrentLazyCollection, toConcurrentLazyStreamable, toLazyCollection, validate, visit, visit, xMatch
fromSupplier, orElse, orElseGet, orElseThrow, toAtomicReference, toList, toOptionalAtomicReference, toStream
public static <T> FutureW<T> empty()
public static <T> FutureW<T> fromIterable(java.lang.Iterable<T> iterable)
public static <T> FutureW<T> of(java.util.concurrent.CompletableFuture<T> f)
public static <T> FutureW<ListX<T>> sequence(CollectionX<FutureW<T>> fts)
public static <T,R> FutureW<R> accumulate(CollectionX<FutureW<T>> fts, Reducer<R> reducer)
public static <T,R> FutureW<R> accumulate(CollectionX<FutureW<T>> fts, java.util.function.Function<? super T,R> mapper, Semigroup<R> reducer)
public static <T> FutureW<T> accumulate(CollectionX<FutureW<T>> fts, Semigroup<T> reducer)
public <R> Eval<R> matches(java.util.function.Function<Matchable.CheckValue1<T,R>,Matchable.CheckValue1<T,R>> secondary, java.util.function.Function<Matchable.CheckValue1<java.lang.Throwable,R>,Matchable.CheckValue1<java.lang.Throwable,R>> primary, java.util.function.Supplier<? extends R> otherwise)
public <R> FutureW<R> coflatMap(java.util.function.Function<? super MonadicValue<T>,R> mapper)
coflatMap
in interface MonadicValue<T>
coflatMap
in interface MonadicValue1<T>
public FutureW<MonadicValue<T>> nest()
nest
in interface MonadicValue<T>
public FutureW<T> combine(Monoid<T> monoid, MonadicValue<? extends T> v2)
MonadicValue1
Monoid<Integer> add = Monoid.of(1,Semigroups.intSum);
Maybe.of(10).combine(add,Maybe.none());
//Maybe[10]
Maybe.none().combine(add,Maybe.of(10));
//Maybe[10]
Maybe.none().combine(add,Maybe.none());
//Maybe.none()
Maybe.of(10).combine(add,Maybe.of(10));
//Maybe[20]
Monoid<Integer> firstNonNull = Monoid.of(null , Semigroups.firstNonNull());
Maybe.of(10).combine(firstNonNull,Maybe.of(10));
//Maybe[10]
combine
in interface MonadicValue1<T>
public <R> FutureW<R> map(java.util.function.Function<? super T,? extends R> fn)
Functor
of(1,2,3).map(i->i*2)
//[2,4,6]
map
in interface ConvertableFunctor<T>
map
in interface Functor<T>
map
in interface MonadicValue<T>
map
in interface MonadicValue1<T>
fn
- Transformation functionpublic <R> FutureW<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 Functor<T>
case1
- Function to generate a case (or chain of cases as a single case)otherwise
- Value if supplied case doesn't matchpublic T get()
get
in interface Convertable<T>
get
in interface java.util.function.Supplier<T>
public boolean isSuccess()
public boolean isFailed()
public java.util.Iterator<T> iterator()
iterator
in interface Convertable<T>
iterator
in interface java.lang.Iterable<T>
public <T> FutureW<T> unit(T unit)
unit
in interface MonadicValue<T>
unit
in interface MonadicValue1<T>
unit
in interface Unit<T>
public ReactiveSeq<T> stream()
public <R> FutureW<R> flatMap(java.util.function.Function<? super T,? extends MonadicValue<? extends R>> mapper)
flatMap
in interface MonadicValue1<T>
public <R> FutureW<R> flatMapCf(java.util.function.Function<? super T,? extends java.util.concurrent.CompletionStage<? extends R>> mapper)
public FutureW<T> toFutureW()
toFutureW
in interface Convertable<T>
public java.util.concurrent.CompletableFuture<T> toCompletableFuture()
toCompletableFuture
in interface Convertable<T>
public java.util.concurrent.CompletableFuture<T> toCompletableFutureAsync()
toCompletableFutureAsync
in interface Convertable<T>
public java.util.concurrent.CompletableFuture<T> toCompletableFutureAsync(java.util.concurrent.Executor exec)
toCompletableFutureAsync
in interface Convertable<T>
exec
- Executor to asyncrhonously populate the CompletableFuturepublic <R> FutureW<R> visit(java.util.function.Function<? super T,R> success, java.util.function.Function<java.lang.Throwable,R> failure)
public <U> FutureW<U> cast(java.lang.Class<? extends U> type)
Functor
ClassCastException
.
// ClassCastException ReactiveSeq.of(1, "a", 2, "b", 3).cast(Integer.class)public FutureW<T> peek(java.util.function.Consumer<? super T> c)
Functor
of(1,2,3).map(System.out::println)
1
2
3
public <R> FutureW<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 Functor<T>
public java.lang.String toString()
toString
in class java.lang.Object
public static <T> FutureW<T> ofResult(T result)
public static <T> FutureW<T> ofError(java.lang.Throwable error)
public Maybe<T> filter(java.util.function.Predicate<? super T> fn)
Filterable
of(1,2,3).filter(i->i>2);
//[3]
filter
in interface Filterable<T>
fn
- to filter elements by, retaining matchespublic <U> Maybe<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 Filterable<T>
public Maybe<T> filterNot(java.util.function.Predicate<? super T> fn)
Filterable
of(1,2,3).filter(i->i>2);
//[1,2]
filterNot
in interface Filterable<T>
fn
- to filter elements by, retaining matchespublic Maybe<T> notNull()
Filterable
of(1,2,null,4).nonNull();
//[1,2,4]
notNull
in interface Filterable<T>
public java.util.Optional<T> toOptional()
toOptional
in interface Convertable<T>
public static <T> FutureW<T> ofSupplier(java.util.function.Supplier<T> s)