Java8---函数式编程-示例
2024-09-05 19:42:42
// 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;//最后登录时间
}
最新文章
- 7.让网站支持http和https的访问方式
- linux 查找文件和搜索文件
- [Unity3d]向量的过度方法以及拖尾效果
- c# 第一个实例 通哥
- WinForm动态添加控件及其事件(转)
- Linux初学 - 安装及网络配置
- 关于JSP的C标签之forEach循环分隔符
- Knockout : 实现复杂的web聊天窗体
- Silverlight之OOB模式下的一些事
- CSS样式中,background-image 背景图片居中显示并且在不同屏幕分辨率下始终居中
- web引用和服务引用
- .net的自定义JS控件,运用了 面向对象的思想 封装 了 控件(.net自定义控件开发的第一天)
- Android Gradle manifestPlaceholders 占位符详解
- MVC 常用扩展点:过滤器、模型绑定等
- NLP&;深度学习:近期趋势概述
- 04 Django REST Framework 认证、权限和限制
- Configure Monit on AWS CentOS7 to guard Squid proxy
- Jenkins 安装简记录
- CF418D Big Problems for Organizers
- STL之Map和multimap容器
热门文章
- winform 异步更新ui
- kvm:双网卡做bond+桥接
- std::string 和 CString问题
- (66)Nginx+lua+Redis开发
- navicat_premium_x64最新版安装说明
- Comparable接口与Comparator接口的比较————总结
- jquery.fileupload-image-editor.js
- mysql修改数据表某列的配置
- 一、基础篇--1.1Java基础-final, finally, finalize 的区别
- SVN更新报错:Checksum mismatch for ……