一 函数式编程

函数式编程是把动作作为参数对象传给调用的方法。

    @Test
    public void testAddThen() {
        List<Integer> list = Arrays.asList(3, 1);
        List<Integer> collect = list.stream()
                // map 的入参是Function类型对象
                // addThen 返回的是Function类型对象
                // ((Function<Integer, Integer>) (item -> item * 3)) 是第一个Function 对象
                // item -> item * 3 是第一个对象的apply实现动作
                .map(((Function<Integer, Integer>) (item -> item * 3))
                        // andThen里面调用的是两次apply动作
                        // 第一次是 ((Function<Integer, Integer>) (item -> item * 3)) 他自己的apply动作
                        // 第二次是 item -> item + 2 andThen 这个方法的入参函数 的apply方法
                        .andThen(item -> item + 2))
                .collect(Collectors.toList());
        System.out.println(collect);
    }