Java8之Predicate, Consumer,Function基础使用


代码如下:

 List list = new ArrayList<>();
        list.add("c");
        list.add("a");
        list.add("b");

        //Predicate使用, 数据流条件过滤
        Predicate predicate = (s)-> s.equals("a");
        Predicate predicateAnd = (s)-> s.equals("b");
        Predicate predicateOr = (s)-> s.equals("c");
        List collect = list.stream().filter(predicate.and(predicateAnd).or(predicateOr)).collect(Collectors.toList());
        System.out.println(collect);
        System.out.println("------------------------");

        //Consumer使用, 数据流业务操作不需要返回参数
        Consumer consumer = s -> {
            System.out.println(s);
        };
        list.stream().forEach(consumer);
        System.out.println("------------------------");
        list.stream().parallel().forEach(consumer);
        System.out.println("------------------------");
        list.stream().parallel().forEachOrdered(consumer);

        //Function使用, 数据流操作类型转换
        Function functionCompose = (s)->{
            if(s.equals("B")){
                return 0;
            }
            return 1;
        };
        Function function = (i)->{
            if(i.equals(0)){
                return 1.0002;
            }
            return 0.0001;
        };
        //先计算functionCompose再计算function  (andThen 与 compose相反)
        Function compose = function.compose(functionCompose);
        List collect1 = Stream.of("A", "B", "C", "D").map(compose).collect(Collectors.toList());
        System.out.println(collect1);