2 回答
TA贡献1719条经验 获得超6个赞
你可以这样做:
Map<String, Set<String>> entryMaps = new LinkedHashMap<>();
groups.forEach(group ->
group.getEntries().forEach(entry ->
entryMaps.computeIfAbsent(
entry.getEntryId().toLowerCase(),
k -> new LinkedHashSet<>())
.add(group.getId())));
这会迭代组,然后是每个组的条目Map.computeIfAbsent,LinkedHashSet如果键不存在,则使用新的空条目放置条目,返回此空集或匹配该键的集。然后,组 id 被添加到这个返回的集合中。
注意:我使用 aSet而不是Listfor 值,以避免可能的重复。而LinkedHashMap和LinkedhashSet保证插入顺序。
TA贡献1825条经验 获得超6个赞
像这样的东西应该可以工作,它需要制作某种中间元组对象:
list.stream()
.flatMap(group ->
group.getEntries.stream()
.map(entry -> new GroupEntry(group.getId(), entry.getEntryId()))
)
.collect(
Collectors.groupingBy(GroupEntry::getEntryId, Collectors.mapping(GroupEntry::getGroupId, Collectors.toList())));
添加回答
举报