zoukankan      html  css  js  c++  java
  • 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;//最后登录时间
        }
  • 相关阅读:
    K近邻(K Nearest Neighbor-KNN)原理讲解及实现
    Bisecting KMeans (二分K均值)算法讲解及实现
    KMeans (K均值)算法讲解及实现
    NodeJs使用async让代码按顺序串行执行
    NodeJs递归删除非空文件夹
    NodeJs之配置文件管理
    NodeJs针对Express框架配置Mysql进行数据库操作
    在Express中使用Multiparty进行文件上传及POST、GET参数获取
    Linux操作命令
    SftpUtil FTP文件上传
  • 原文地址:https://www.cnblogs.com/hahajava/p/12074705.html
Copyright © 2011-2022 走看看