// Java8函数式编程示例—(Predicate、Stream、Optional)   https://blog.csdn.net/weixin_41950473/article/details/84930562

//        Set<Integer> nums = new HashSet<>();
//        for (int i = 0; i < 100; i++) {
//            Integer num = (int) (100 * Math.random());
//            nums.add(num);
//            System.out.println(num.intValue());
//        }
//
//        // predicate语义
//        Predicate<Integer> p1 = x -> x.intValue() > 40 && x.intValue() < 50;
//        Predicate<Integer> p2 = x -> x.intValue() > 30 && x.intValue() < 80;
//
//        List<Integer> res = nums.stream().filter(p1.and(p2)).collect(Collectors.toList());// 流式操作
//
//        Collections.sort(res, Comparator.comparing(Integer::intValue));// 排序,Comparator


        List<Integer> res = Arrays.asList(6,9,12);

        // Optional
        List<Integer> value =
            Optional.ofNullable(res)
                    .map((param) -> {
                        return param.stream()
                                .map(x -> x / 3)
                                .collect(Collectors.toList());
                    })
                    .orElseThrow(IllegalArgumentException::new);

        System.out.println("--->"+value);
12-27 10:43