gpt4 book ai didi

java - 合并具有重复键的 map 列表

转载 作者:行者123 更新时间:2023-12-03 23:01:52 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Merge map of arrays with duplicate keys

(8 个回答)



Merging a list of maps into a single map

(5 个回答)


11 个月前关闭。




我有一个列表 HashMap<Integer, ArrayList<String>>并希望将它们合并到 中循环 .
问题是每个 map 的键都从 0 开始,所以键会被复制。 putAll()不起作用,因为它覆盖了键并总是给我最后一张 map 。
我见过使用 Stream 合并两张 map 的示例,但在我的情况下,可能有 2 张以上的 map 。我正在尝试生成一个具有增量键的合并映射。例如:
假设我在列表中有 2 个映射(可​​能更多)并且两个键都从 0 开始但以不同的值结束。
第一张 map ,键从 0 开始到 10
第二张图,key从0开始到15结束
是否可以添加 key 从 11 开始的第二张 map ?
最后,我需要一个合并的映射,其中第一个键从 0 开始,最后一个键在 25 结束。

最佳答案

我会遍历您拥有的任意数量的 map ,然后对于您想要组合的每个 map ,遍历条目。对于每个条目,您可以使用 computeIfAbsent 有条件地为key创建一个空列表,然后调用 addAll 在值(value)上。例如。:

List<Map<Integer, List<String>>> maps = List.of(
Map.of(1, List.of("hello")),
Map.of(2, List.of("world")),
Map.of(1, List.of("a"), 2, List.of("b"))
);

Map<Integer, List<String>> combined = new HashMap<>();
for (Map<Integer, List<String>> map : maps) {
for (Map.Entry<Integer, List<String>> e : map.entrySet()) {
combined.computeIfAbsent(e.getKey(), k -> new ArrayList<>()).addAll(e.getValue());
}
}

关于java - 合并具有重复键的 map 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65250260/

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