gpt4 book ai didi

java - 将 Java Map> 转换为 Map>

转载 作者:行者123 更新时间:2023-12-02 08:59:57 26 4
gpt4 key购买 nike

什么是转换的好习惯 Map<Obj1, Collection<Obj2>>Map<Obj2, Collection<Obj1>>

我尝试用 MultiMap 来做这件事.

    Map<Obj1, Collection<Obj2>> originalMap = ...;
Multimap<Obj1, Obj2> multiMap = ArrayListMultimap.create();
originalMap.forEach(multiMap::putAll);
Map<Obj2, Collection<Obj1>> convertedMap = Multimaps.invertFrom(multiMap, ArrayListMultimap.create()).asMap();

有更好的方法吗?

最佳答案

您可以使用 Java 8 Streams 实现相同的目标;

Map<Obj1, List<Obj2>> originalMap = ...

Map<Obj2, List<Obj1>> reversedMap = originalMap.entrySet().stream()
.flatMap(obj2s -> obj2s.getValue().stream()
.map(obj2 -> Map.entry(obj2, obj2s.getKey())))
.collect(
Collectors.groupingBy(
Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())
)
);

fltMap隐蔽Map<Obj1, List<Obj2>>变成像 <Obj2, Obj1> 这样的元组,然后收集按Obj2分组的结果.

关于java - 将 Java Map<Obj1, Collection<Obj2>> 转换为 Map<Obj2, Collection<Obj1>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com