【问题标题】:How to multiply two values with the same key name from different linkedHashMaps?如何将来自不同linkedHashMap的具有相同键名的两个值相乘?
【发布时间】:2016-08-08 11:00:20
【问题描述】:

我有两个长度相同、键名相同但值不同的linkedHashmap。例如:

Map<String, Double> map1= new LinkedHashMap<String, Double>(); 

map1.put("A", 2.3);    
map1.put("B", 6.1);
map1.put("C", 5.3);

Map<String, Double> map2= new LinkedHashMap<String, Double>(); 

map2.put("A", 10.3);    
map2.put("B", 60.1);
map2.put("C", 0.3);

如何将 map1 中的每个值与 map2 中相同的对应键(A 2.3*10.3、B 6.1*60.1 等)相乘并将结果保存到新的linkedHashMap?

我试过了,但没有运气。

Map<String, Double> map3= new LinkedHashMap<String, Double>();
                double valueMap1 = map1.get(key);
                double valueMap2 = map2.get(key1);

            for(String key : map1.keySet())
                for(String key1 : map2.keySet()){
            if(map1.containsKey(key1)){


                double newValue =valueMap1* valueMap2;


                map3.put(key1, newValue);
        }
      }

【问题讨论】:

  • 徒手尝试了什么?
  • 解决方法很简单,请说明您尝试了什么以及您在哪里失败了。如果您还没有尝试过任何事情,请先尝试,如果没有成功,请询问
  • 你的两个linkedhashmap中键的顺序是一样的吗?然后您可以将排序后的映射的值作为列表获取并进行所需的乘法,将值保存到新列表中,然后组合键和值。
  • @MichaelGantman 我已经添加了我尝试但没有成功的内容,我对地图比较陌生,所以我对这个问题感到很迷茫。
  • 您不应该使用嵌套循环。此任务只有一个循环。

标签: java hashmap linkedhashmap


【解决方案1】:

这是应该解决您的问题的循环

Map<String, Double> map3= new LinkedHashMap<String, Double>();
for(String key : map1.keySet()) {
    if(map2.containsKey(key)) {
       map3.put(key, map1.get(key) * map2.get(key);
    }
}

【讨论】:

    猜你喜欢
    • 2019-07-09
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多