Package de.xima.fc.utils
Class XFunctionalUtils
- java.lang.Object
-
- de.xima.fc.utils.XFunctionalUtils
-
public final class XFunctionalUtils extends Object
Utilities related tojava.util.function- Since:
- 8.0.4
- Author:
- XIMA MEDIA GmbH
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> Predicate<T>andPredicate(Iterable<? extends Predicate<? super T>> predicates)Combines all predicates with a logical AND.static <T> Predicate<T>andPredicate(Predicate<? super T>... predicates)Combines all predicates with a logical AND.static <I1,I2,O>
BiFunction<I1,I2,O>catchingBiFunction(IThrowingBiFunction<I1,I2,O> fn)Wraps a throwing bi-function into a bi-function that catches checked exceptions and rethrows them as runtime exceptions.static <I,O>
Function<I,O>catchingFunction(IThrowingFunction<I,O> fn)Wraps a throwing function into a function that catches checked exceptions and rethrows them as runtime exceptions.static <O> Supplier<O>catchingSupplier(IThrowingSupplier<O> fn)Wraps a throwing supplier into a supplier that catches checked exceptions and rethrows them as runtime exceptions.static <A,B,C>
Function<A,C>composeFunction(Function<? super A,? extends B> f, Function<? super B,? extends C> g)Composes two functions, applying the first function and then the second function to the input.static <A,B,C>
BiFunction<A,B,C>constantBiFunction(C value)Returns a bi-function that always returns the same value.static <A,B>
Function<A,B>constantFunction(B value)Returns a function that always returns the same value.static <T> IntFunction<T>constantIntFunction(T value)Returns an int function that always returns the same value.static <T> Predicate<? super T>constantPredicate(boolean value)Returns a predicate that always returns the same value.static <T> Supplier<T>constantSupplier(T value)Returns a supplier that always returns the same value.static <T1,T2,R>
Function<T2,R>curryBiFunction(BiFunction<? super T1,? super T2,? extends R> fn, T1 arg1)Curries the first argument of a bi-variate function with the given value.static <T1,T2,R>
Supplier<R>curryBiFunction(BiFunction<? super T1,? super T2,? extends R> fn, T1 arg1, T2 arg2)Curries both arguments of a bi-variate function with the given value.static <T1,T2,R>
Function<T1,R>curryBiFunctionLast(BiFunction<? super T1,? super T2,? extends R> fn, T2 arg2)Curries the second argument of a bi-variate function with the given value.static Predicate<String>endingWith(String suffix)Creates a predicate that checks whether the input ends with the given suffix.static Predicate<String>endingWithAny(Iterable<String> suffixes)Creates a predicate that checks whether the input ends with any of the given suffixes.static <T,K>
Predicate<T>equalTo(K key, Function<? super T,? extends K> keyExtractor)Creates a predicate that extracts the key from the input using the given key extractor and compares it to the given key.static <T> Predicate<T>equalTo(T value)Creates a predicate that checks whether the input is equal to the given value.static <T extends CharSequence>
Predicate<T>equalToIgnoreCase(String value)Creates a predicate that checks whether the input is equal to the given value, ignoring case.static <T> Predicate<T>orPredicate(Iterable<? extends Predicate<? super T>> predicates)Combines all predicates with a logical OR.static <T> Predicate<T>orPredicate(Predicate<? super T>... predicates)Combines all predicates with a logical OR.static Predicate<String>startingWith(String prefix)Creates a predicate that checks whether the input starts with the given prefix.static Predicate<String>startingWithAny(Iterable<String> prefixes)Creates a predicate that checks whether the input start with any of the given suffixes.static <R> BinaryOperator<R>takeFirst()Gets a binary operator that returns its first argument, useful e.g.static <R> BinaryOperator<R>takeMax(Comparator<R> comparator)Gets a binary operator that returns the largest of both arguments, useful e.g.static <R> BinaryOperator<R>takeMin(Comparator<R> comparator)Gets a binary operator that returns the smallest of both arguments, useful e.g.static <R> BinaryOperator<R>takeSecond()A binary operator that returns its second argument, useful e.g.
-
-
-
Method Detail
-
andPredicate
@SafeVarargs public static <T> Predicate<T> andPredicate(Predicate<? super T>... predicates)
Combines all predicates with a logical AND. Creates a combined predicate that checks whether all the given predicates are true. Returns true if no predicates are given. Has a better name for static imports, and uses the native Predicate interface. Predicates that are null are ignored.- Type Parameters:
T- Type of the items to test.- Parameters:
predicates- The predicates to combine.- Returns:
- A predicate that checks whether all the given predicates are true.
-
andPredicate
public static <T> Predicate<T> andPredicate(Iterable<? extends Predicate<? super T>> predicates)
Combines all predicates with a logical AND. Creates a combined predicate that checks whether all the given predicates are true. Returns true if no predicates are given. Has a better name for static imports, and uses the native Predicate interface. Predicates that are null are ignored.- Type Parameters:
T- Type of the items to test.- Parameters:
predicates- The predicates to combine.- Returns:
- A predicate that checks whether all the given predicates are true.
-
catchingBiFunction
public static <I1,I2,O> BiFunction<I1,I2,O> catchingBiFunction(IThrowingBiFunction<I1,I2,O> fn)
Wraps a throwing bi-function into a bi-function that catches checked exceptions and rethrows them as runtime exceptions.- Type Parameters:
I1- First input type.I2- Second input type.O- Output type.- Parameters:
fn- Throwing function to wrap.- Returns:
- Function that catches checked exceptions and rethrows them as runtime exceptions.
-
catchingFunction
public static <I,O> Function<I,O> catchingFunction(IThrowingFunction<I,O> fn)
Wraps a throwing function into a function that catches checked exceptions and rethrows them as runtime exceptions.- Type Parameters:
I- Input type.O- Output type.- Parameters:
fn- Throwing function to wrap.- Returns:
- Function that catches checked exceptions and rethrows them as runtime exceptions.
-
catchingSupplier
public static <O> Supplier<O> catchingSupplier(IThrowingSupplier<O> fn)
Wraps a throwing supplier into a supplier that catches checked exceptions and rethrows them as runtime exceptions.- Type Parameters:
O- Output type.- Parameters:
fn- Throwing supplier to wrap.- Returns:
- Supplier that catches checked exceptions and rethrows them as runtime exceptions.
-
composeFunction
public static <A,B,C> Function<A,C> composeFunction(Function<? super A,? extends B> f, Function<? super B,? extends C> g)
Composes two functions, applying the first function and then the second function to the input. Equivalent tof.andThen(g)org(f(x)). This order was chosen intentionally to correspond better with the common Java coding style of chaining method calls.composeFunction(toRootLowerCase, Locale::getDisplayName) // The above composition is equivalent to the following lambda expression. // Note the order of the functions is the same. locale -> toRootLowerCase(locale.getDisplayName())
- Type Parameters:
A- The input type of the first function.B- The output type of the first function and the input type of the second function.C- The output type of the second function.- Parameters:
f- The first function to apply. When null, a constant function supplying null is used.g- The second function to apply. When null, a constant function supplying null is used.- Returns:
- A function that applies the first function and then the second function to the input.
-
constantBiFunction
public static <A,B,C> BiFunction<A,B,C> constantBiFunction(C value)
Returns a bi-function that always returns the same value.- Type Parameters:
A- Type of the first input.B- Type of the second input.C- Type of the output.- Parameters:
value- The value to return.- Returns:
- A bi-function that always returns the same value.
-
constantFunction
public static <A,B> Function<A,B> constantFunction(B value)
Returns a function that always returns the same value.- Type Parameters:
A- Type of the input.B- Type of the output.- Parameters:
value- The value to return.- Returns:
- A function that always returns the same value.
-
constantIntFunction
public static <T> IntFunction<T> constantIntFunction(T value)
Returns an int function that always returns the same value.- Type Parameters:
T- Type of the value.- Parameters:
value- The value to return.- Returns:
- An int function that always returns the same value.
-
constantPredicate
public static <T> Predicate<? super T> constantPredicate(boolean value)
Returns a predicate that always returns the same value.- Type Parameters:
T- Type of the input.- Parameters:
value- The value to return.- Returns:
- A predicate that always returns the same value.
-
constantSupplier
public static <T> Supplier<T> constantSupplier(T value)
Returns a supplier that always returns the same value.- Type Parameters:
T- Type of the value.- Parameters:
value- The value to return.- Returns:
- A supplier that always returns the same value.
-
curryBiFunction
public static <T1,T2,R> Supplier<R> curryBiFunction(BiFunction<? super T1,? super T2,? extends R> fn, T1 arg1, T2 arg2)
Curries both arguments of a bi-variate function with the given value.- Type Parameters:
T1- The type of the first argument.T2- The type of the second argument.R- The return type of the function.- Parameters:
fn- The function to curry.arg1- The first argument to curry.arg2- The second argument to curry.- Returns:
- A supplier that invokes the given function with the given arguments and returns that result.
-
curryBiFunction
public static <T1,T2,R> Function<T2,R> curryBiFunction(BiFunction<? super T1,? super T2,? extends R> fn, T1 arg1)
Curries the first argument of a bi-variate function with the given value.- Type Parameters:
T1- The type of the first argument.T2- The type of the second argument.R- The return type of the function.- Parameters:
fn- The function to curry.arg1- The argument to curry.- Returns:
- A function that takes a value of the second type and returns the result of invoking the given function with that the given first argument and that value.
-
curryBiFunctionLast
public static <T1,T2,R> Function<T1,R> curryBiFunctionLast(BiFunction<? super T1,? super T2,? extends R> fn, T2 arg2)
Curries the second argument of a bi-variate function with the given value.- Type Parameters:
T1- The type of the first argument.T2- The type of the second argument.R- The return type of the function.- Parameters:
fn- The function to curry.arg2- The argument to curry.- Returns:
- A function that takes a value of the first type and returns the result of invoking the given function with that value and the given second argument.
-
endingWith
public static Predicate<String> endingWith(String suffix)
Creates a predicate that checks whether the input ends with the given suffix. null strings are always treated as empty strings.- Parameters:
suffix- The suffix to check for.- Returns:
- A predicate that checks whether the input ends with the given suffix.
-
endingWithAny
public static Predicate<String> endingWithAny(Iterable<String> suffixes)
Creates a predicate that checks whether the input ends with any of the given suffixes. null strings are always treated as empty strings.- Parameters:
suffixes- The suffixes to check for.- Returns:
- A predicate that checks whether the input ends with any of the given suffixes.
-
equalTo
public static <T> Predicate<T> equalTo(T value)
Creates a predicate that checks whether the input is equal to the given value.- Type Parameters:
T- The input type.- Parameters:
value- The key to compare to.- Returns:
- A predicate that checks whether a property of the input equals the given key.
-
equalTo
public static <T,K> Predicate<T> equalTo(K key, Function<? super T,? extends K> keyExtractor)
Creates a predicate that extracts the key from the input using the given key extractor and compares it to the given key.- Type Parameters:
T- The input type.K- The key type.- Parameters:
key- The key to compare to.keyExtractor- The function to extract the key from the input.- Returns:
- A predicate that checks whether a property of the input equals the given key.
-
equalToIgnoreCase
public static <T extends CharSequence> Predicate<T> equalToIgnoreCase(String value)
Creates a predicate that checks whether the input is equal to the given value, ignoring case.- Type Parameters:
T- The input type.- Parameters:
value- The key to compare to.- Returns:
- A predicate that checks whether a property of the input equals the given key, ignoring case.
-
orPredicate
@SafeVarargs public static <T> Predicate<T> orPredicate(Predicate<? super T>... predicates)
Combines all predicates with a logical OR. Creates a combined predicate that checks whether any of the given predicates are true. Returns false if no predicates are given. Has a better name for static imports, and uses the native Predicate interface. Predicates that are null are ignored.- Type Parameters:
T- Type of the items to test.- Parameters:
predicates- The predicates to combine.- Returns:
- A predicate that checks whether any of the given predicates are true.
-
orPredicate
public static <T> Predicate<T> orPredicate(Iterable<? extends Predicate<? super T>> predicates)
Combines all predicates with a logical OR. Creates a combined predicate that checks whether any of the given predicates are true. Returns false if no predicates are given. Has a better name for static imports, and uses the native Predicate interface. Predicates that are null are ignored.- Type Parameters:
T- Type of the items to test.- Parameters:
predicates- The predicates to combine.- Returns:
- A predicate that checks whether any of the given predicates are true.
-
startingWith
public static Predicate<String> startingWith(String prefix)
Creates a predicate that checks whether the input starts with the given prefix.- Parameters:
prefix- The prefix to check for.- Returns:
- A predicate that checks whether the input starts with the given prefix.
-
startingWithAny
public static Predicate<String> startingWithAny(Iterable<String> prefixes)
Creates a predicate that checks whether the input start with any of the given suffixes. null strings are always treated as empty strings.- Parameters:
prefixes- The prefixes to check for.- Returns:
- A predicate that checks whether the input ends with any of the given suffixes.
-
takeFirst
public static <R> BinaryOperator<R> takeFirst()
Gets a binary operator that returns its first argument, useful e.g. for map merge functions.- Type Parameters:
R- Type of the items.- Returns:
- A binary operator returning its first argument and discarding its second argument.
-
takeMax
public static <R> BinaryOperator<R> takeMax(Comparator<R> comparator)
Gets a binary operator that returns the largest of both arguments, useful e.g. for map merge functions. When both arguments are equal, the second argument is returned.- Type Parameters:
R- Type of the arguments.- Parameters:
comparator- Comparator for comparing two arguments.- Returns:
- A binary operator returning the largest of both given arguments.
-
takeMin
public static <R> BinaryOperator<R> takeMin(Comparator<R> comparator)
Gets a binary operator that returns the smallest of both arguments, useful e.g. for map merge functions. When both arguments are equal, the first argument is returned.- Type Parameters:
R- Type of the arguments.- Parameters:
comparator- Comparator for comparing two arguments.- Returns:
- A binary operator returning the largest of both given arguments.
-
takeSecond
public static <R> BinaryOperator<R> takeSecond()
A binary operator that returns its second argument, useful e.g. for map merge functions.- Type Parameters:
R- Type of the items.- Returns:
- A binary operator returning its second argument and discarding its first argument.
-
-