java 8 stream、lambda表达式对list操作分组、过滤、求和、最值、排序、去重
1.分组
通过groupingBy分组指定字段
list.stream().collect(Collectors.groupingBy(User::getSex));
2.过滤
通过filter方法过滤某些条件
list.stream().filter(a -> !a.getJobNumber().equals("201901")).collect(Collectors.toList());
3.求和
基本类型:先mapToInt,然后调用sum方法
List.stream().mapToInt(User::getAge).sum();
大数类型:reduce调用BigDecimal::add方法
List.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
4.最值
最大值
List.stream().map(User::getEntryDate).max(Date::compareTo).get();
最小值
List.stream().map(User::getEntryDate).min(Date::compareTo).get();
5.排序
list.stream().sorted((o1, o2)->o1.getItem().getValue().
compareTo(o2.getItem().getValue())).
collect(Collectors.toList());
sort()
单字段排序,根据id排序 list.sort(Comparator.comparing(Obj::getItem));
多字段排序,根据id,年龄排序 list.sort(Comparator.comparing(Obj::getItem).thenComparing(Obj::getItem));
6.去重
通过distinct方法
List.stream().distinct().collect(Collectors.toList());
对属性
重写方法
7.获取list某个字段组装新list
List.stream().map(a -> a.getId()).collect(Collectors.toList());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?