如果我有两个HashMap
s,hm1
和hm2
,我怎样才能迭代这两个值并将两个值在两个HashMap
的每个点上相乘s和总和?它们都是相同的,所以我不需要担心键,只需要担心值。
数据的格式为
hm1 =
(A, 3)
(B, 4)
(C, 7)
hm2 =
(A, 4)
(B, 6)
(C, 3)
然后我想做这样的事情,但显然这段代码不正确,因为我只是通过hm1进行迭代。
double sum = 0.00;
for (Map.Entry<String, Double> hm : hm1.entrySet()) {
sum += hm1.getValue() * hm2.getValue();
}
所以我基本上会循环执行:
1st iteration: Sum = 0 + 3*4
2nd Iteration: Sum = 12 + 4*6
3rd iteration: Sum = 36 + 7*3
Exit Loop:
Sum = 57
感谢您提供任何帮助。
答案 0 :(得分:2)
鉴于两个HashMaps具有相同数量的条目,并且所有条目具有相同的对应密钥,那么获取总和的可靠方式将是这样的:
double sum = 0;
/* iterate through all the keys in hm1 */
/* order doesn't matter */
for (String key : hm1.keySet()) {
double value1 = hm1.get(key);
double value2 = hm2.get(key);
sum += value1 * value2;
}
答案 1 :(得分:0)
您可以在第一张地图上使用迭代中的键来获取第二张地图的值:
double sum = 0.00;
for (Map.Entry<String, Double> hm : hm1.entrySet()) {
double hm2Value = hm2.get(hm.getKey());
sum += hm.getValue() * hm2Value;
}
请注意,这仅适用于两个地图具有相同键的情况。如果两者都缺少密钥,那么你必须考虑如何处理它。