Java 8 中的功能函数

说明

内容来自《Java 8 In Action》书籍


Java 8 中常用到的功能函数

1.Predicate

java.util.function.Predicate<T>接口定义了一个名叫test的抽象方法,它接受泛型T对象,并返回一个boolean。


2.Consumer

java.util.function.Consumer<T>定义了一个名叫accept的抽象方法,它接受泛型T 的对象,没有返回(void)。


3.Function

java.util.function.Function<T, R>接口定义了一个叫作apply的方法,它接受一个 泛型T的对象,并返回一个泛型R的对象。


4.Supplier

@FunctionalInterface
public interface Supplier<T> {

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}


5.UnaryOperator

@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {

    /**
     * Returns a unary operator that always returns its input argument.
     *
     * @param <T> the type of the input and output of the operator
     * @return a unary operator that always returns its input argument
     */
    static <T> UnaryOperator<T> identity() {
        return t -> t;
    }
}


6.BinaryOperator

BinaryOperator<T>接受两个同类型参数,返回同类值:BinaryOperator<T>  (T,T)->T。

基础类型:IntBinaryOperator,LongBinaryOperator,DoubleBinaryOperator


7.BiPredicate

@FunctionalInterface
public interface BiPredicate<T, U> {

    /**
     * Evaluates this predicate on the given arguments.
     *
     * @param t the first input argument
     * @param u the second input argument
     * @return {@code true} if the input arguments match the predicate,
     * otherwise {@code false}
     */
    boolean test(T t, U u);


8.BiConsumer

@FunctionalInterface
public interface BiConsumer<T, U> {

    /**
     * Performs this operation on the given arguments.
     *
     * @param t the first input argument
     * @param u the second input argument
     */
    void accept(T t, U u);


第二个参数为基本类型:ObjIntConsumer<T>,ObjLongConsumer<T>,ObjDoubleConsumer<T>


9.BiFunction

@FunctionalInterface
public interface BiFunction<T, U, R> {

    /**
     * Applies this function to the given arguments.
     *
     * @param t the first function argument
     * @param u the second function argument
     * @return the function result
     */
    R apply(T t, U u);


返回基本类型:ToIntBiFunction<T, U>,ToLongBiFunction<T, U>,ToDoubleBiFunction<T, U>


功能函数表达式

表达式: 

(1) T->R 

(2) (int, int)->int 

(3) T->void 

(4) ()->T 

(5) (T, U)->R

说明:

(1) Function<T,R>不错。它一般用于将类型T的对象转换为类型R的对象(比如Function<Apple, Integer>用来提取苹果的重量)。

 (2) IntBinaryOperator具有唯一一个抽象方法,叫作applyAsInt,它代表的函数描述符是(int, int) -> int。 

(3) Consumer<T>具有唯一一个抽象方法叫作accept,代表的函数描述符是T -> void。 

(4) Supplier<T>具有唯一一个抽象方法叫作get,代表的函数描述符是()-> T。或者,Callable<T>具有唯一一个抽象方法叫作call,代表的函数描述符是() -> T。 

(5) BiFunction<T, U, R>具有唯一一个抽象方法叫作apply,代表的函数描述符是(T,U) -> R。



 

展开阅读全文