java - 转换列表到地图> 由 Document 对象中的变量与 Java 8 流 (lamda) 在一行中分组
问题描述
我有一个对象列表,我想将其转换为按对象中的一个变量分组的 Map。下面是我得到的冗长代码。有人可以帮我在一行中做到这一点吗?
List<Document> all = repo.getAllDocuments();
List<String> ids = all.parallelStream()
.map(obj -> obj.getFor().getOpp().Id())
.collect(Collectors.toList());
Map<String, List<Document>> map = new HashMap<>();
ids.forEach(id -> map.put(id, all.parallelStream()
.filter(obj -> obj.getFor().getOpp().getId().equals(id))
.collect(Collectors.toList())));
解决方案
试试这个:
Map<String, List<Document>> map =
repo.getAllDocuments()
.stream()
.collect(Collectors.groupingBy(doc -> doc.getFor().getOpp().getId()));
推荐阅读
- xslt - XSLT3 是否可以在与 expand-text=yes 相同的模板中使用禁用输出转义?
- java - 如何在两个不同的输出中识别相同的数字
- docker - 在 docker 容器中使用内存分析器
- reactjs - React Native:TextInput toUpperCase 在 onChangeText 中的 Android 上不起作用
- java - Java:在没有 volatile 变量的情况下关机?
- postgresql - 删除字符串中的希腊字母
- c# - 如何检查是否使用 Visual Studio 变量切换了“首选 32 位”
- sockets - 打开的文件太多 - TCP/IP 套接字和 OpenSSL
- linux - 使用通配符检查文件是否存在于多个目录中
- java - 为不同版本的依赖项提供具有不同代码的 Java 库