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 } }