Java8---函数式编程-示例

       // 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);
//两个List通过相同的属性值进行个别属性赋值  // https://www.jianshu.com/p/446eb7d3a261
    //把user登录日志表中的 最后登录time 更新set到 该user表中
    public static void main(String[] args) {

        List<UserVo> userList = new ArrayList<>();//这里要非空
        List<UserLoginLogVo> userLoginLogVos =  new ArrayList<>();//这里要非空 业务代码不贴出来
        if(CollectionUtils.isNotEmpty(userLoginLogVos)) {
            userList = userList
                    .stream()
                    .map(user -> userLoginLogVos.stream()
                            .filter(log -> user.getUserId().equals(log.getUserId()))
                            .findFirst() //返回集合流的第一个对象
                            .map(log -> {
                                user.setLastLoginTime(log.getLastLoginTime());
                                return user;
                            })
                            .orElse(user))
                    .collect(Collectors.toList());
        }
    }
    @Data
    static class UserVo{
        private String userId;//用户全局ID
        private Date lastLoginTime;//最后登录时间
    }
    @Data
    static class UserLoginLogVo {
        private String userId;//用户全局ID
        private Date lastLoginTime;//最后登录时间
    }
原文地址:https://www.cnblogs.com/hahajava/p/12074705.html