// 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;//最后登录时间 }