gpt4 book ai didi

java - 根据两个映射的键将两个映射迭代到第三个映射

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

我有两个映射,其中键为整数,值为 double 值。

我想创建第三个按键排序的映射,值将是两个映射中的 double 列表。

map 1:

1, 90.00
5, 75.45
8, 76.50

map 2:

4, 12.00
5, 322.09
8, 11.09
9, 21.00

最终 map :

1, (90.00,0.00)
5, (75.45,322.09)
8, (76.50,11.09)
9, (0.00, 21.00)

从上面可以清楚地看出,如果一个映射中的键在另一个映射中丢失,则另一个映射的最终映射中的值应默认为 0.00

Map firstMap = new HashMap<Integer, Double>();
Map secondMap = new HashMap<Integer, Double>();

Map finalMap = new HashMap<Integer, List<Double>>();

firstMap.put(1, 90.00);
firstMap.put(5, 75.45);
firstMap.put(8, 76.50);

secondMap.put(4, 12.00);
secondMap.put(5, 322.09);
secondMap.put(8, 11.09);
secondMap.put(9, 21.00);

我可以使用 putAll 方法将所有键放入第三个映射中。但如何将这些值设置为我想要的值?

感谢您的阅读!

最佳答案

简单地做

// Create a sorted map
Map<Integer, List<Double>> finalMap = new TreeMap<Integer, List<Double>>();

Set<Integer> keys = new HashSet<Integer>();
keys.addAll(firstMap.keySet());
keys.addAll(secondMap.keySet());
for (Integer key : keys) {
double first = firstMap.containsKey(key) ? firstMap.get(key) : 0.0;
double second = secondMap.containsKey(key) ? secondMap.get(key) : 0.0;
finalMap.put(key, Arrays.asList(first, second));
}

使用 Guava 就这么简单

Multimap<Integer, Double> finalMultiMap = ArrayListMultimap.create();
finalMultiMap.putAll(Multimaps.forMap(firstMap));
finalMultiMap.putAll(Multimaps.forMap(secondMap));

Map<Integer, Collection<Double>> finalMap = finalMultiMap.asMap();

关于java - 根据两个映射的键将两个映射迭代到第三个映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535291/

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