【发布时间】:2020-03-26 17:55:06
【问题描述】:
在某段代码中我有这种情况,集合的类型是我需要的:
Map<Specialization, List<SpecialistInfo>> specialistsMap = specialistsResponse
.getSpecialists()
.stream()
.collect(groupingBy(SpecialistInfo::getSpecializations));
但实际上,该流返回一个Map<List<Specialization>, List<SpecialistInfo>>.
getSpecialists() 方法返回List<SpecialistInfo> specialists; 并且SpecialistInfo 的每个实例也包含一个列表。所以,getSpecializations 方法返回List<Specialization> specializations
我需要将我的地图分组为Map<Specialization, List<SpecialistInfo>>。
如何通过 Stream API 实现?
【问题讨论】:
-
您想复制数据?像同一个列表中的专业化一样,关联相同的值列表?
-
我没有对此进行测试,但我很好奇
.collect(Collectors.flatMapping(specialistInfo -> specialistInfo.getSpecializations().stream(), Collectors.groupingBy(Function.identity())));是否有可能 -
输入数据结构包含什么并不完全清楚。
Specialization在地图中用作键的所有列表中是否唯一? `List的值是否属于键列表的所有 Spezialization?
标签: java collections java-stream