Java中Stream流里面的findFirst()和findAny()区别及list表用allMatch交集并集和分组
findFirst()和findAny()存在并行上的区别,findFirst并行限制较多,findAny并行限制较少,如果不在乎哪个值,用findAny。
两个list列表用stream流进行过滤,取它们的交集:
List<ChangeRecordListDTO> filteredList = allList.stream().filter(t -> recordList.stream().filter(s -> t.getId().longValue() == s.getManagerId()).findFirst().orElse(null) != null).collect(Collectors.toList());
两个list列表用stream流进行过滤,取它们的差集,注意:只返回bb中独有的元素,不返回aa中独有的元素
List<ProxyListInfo> filteredList = bb.stream().filter(t -> aa.stream().allMatch(s -> !t.getProxyIp().equals(s.getProxyIp()) && !t.getDelFlag())).collect(Collectors.toList());
在分组时,将映射的对象转成其他值,默认用Collectors.toList()代替Collectors.mapping()
Map<String, List<String>> tableMap = tableList.stream().collect(Collectors.groupingBy(TableDTO::getDbName, Collectors.mapping(TableDTO::getTableName, Collectors.toList())));
使用HashMap进行分组
Map<String,Map<String,Double> dd = new HashMap<>();
dd.computeIfAbsent(bb,x->new HashMap<>()).put(cc,dd);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?