Function篇

import java.util.function.Function;

public class UserFunction {


    public static void main(String[] args) {

        /**
         * Function接口的主要作用是将一个给定的对象进行加工,然后返回加工后的对象,这个加工可以是任何操作.
         *
         * 其核心方法如下:
         *      R apply(T t); 将一个给定的对象进行加工,然后返回加工后的对象,可以将该方法理解为一个一维函数,参数R是自变量,参数T是因变量.
         *      default <V> Function<V, R>  compose(Function<? super V, ? extends T> before) 组合函数,在调用当前function之前执行
         *      default <V> Function<T, V>  andThen(Function<? super R, ? extends V> after) 组合函数,在调用当前function之后执行
         *      static <T> Function<T, T>   identity()    原函数,返回与参数一致的函数,即可以理解为 y = x
         *
         *
         *
         * 与Function接口相关的接口:
         *      BiFunction<T, U, R>         二维函数,可以理解成 z = kx + by,即对给定的两个参数U,R进行加工,生产T
         *      DoubleFunction<R>           用于处理处理将其他类型转成double类型数据的Function
         *      IntFunction<R>              用于处理处理将其他类型转成int类型数据的Function
         *      LongFunction<R>             用于处理将其他类型转成long类型数据的Function
         *      LongToIntFunction           用于处理将long转换成int的Function
         *      LongToDoubleFunction        用于处理将long转换成double的Function
         *      ToDoubleBiFunction<T, U>    用于处理将给定两个参数T,U转换成double类型的BiFunction
         *      ToDoubleFunction<T>         用于处理将其他类型转换成double的Function
         *      ToIntBiFunction<T, U>       用于处理将给定两个参数T,U转换成int类型的BiFunction
         *      ToIntFunction<T>            用于处理将其他类型转换成int的Function
         *      ToLongBiFunction<T, U>      用于处理将给定两个参数T,U转换成long类型的BiFunction
         *      ToLongFunction<T>           用于处理将其他类型转换成long的Function
         */
        // identity():可以看到identity()返回的值与原值是一致的.
        Function<Object, Object> function = Function.identity();
        System.out.println(function.apply(100));                // 100
        System.out.println(Function.identity().apply(100111));  // 100111
        Person person = new Person();
        System.out.println(person == Function.identity().apply(person));    // true

        // andThen():用Function.andThen()来实现一个函数:y = 10x + 10;
        Function<Integer, Integer> function = x -> x * 10;
        function = function.andThen(x -> x + 10);
        System.out.println(function.apply(8)); // 90

        // compose():用Function.compose()来实现一个函数:y = 10 (10+x) + 10;
        Function<Integer, Integer> function = (x -> x * 10);
        function = function.compose(x -> x + 10);
        function = function.andThen(x -> x + 10);
        System.out.println(function.apply(8));  // 190

    }
}

 

posted @ 2020-07-24 16:03  为你编程  阅读(356)  评论(0)    收藏  举报