Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算具有相同密钥的不同哈希映射的值之和?_Java_Hashmap - Fatal编程技术网

Java 如何计算具有相同密钥的不同哈希映射的值之和?

Java 如何计算具有相同密钥的不同哈希映射的值之和?,java,hashmap,Java,Hashmap,因此,我有一个名为“hm”的hashmap,它生成以下输出(注意: 这只是一个选择): 此输出是使用以下代码创建的(注意:此处未显示类代码的其余部分): 最终,必须计算每个位置(关键点)的平均值,但这是一个问题,我认为,当我知道如何做上述工作时,我可以自己解决这个问题 编辑:实际输出要大得多!想想100多个hashmaps,其中有100多个键。试试类似的东西 newHashMap.put(key1,map1.get(key1)+map2.get(key1)+map3.get(key1));

因此,我有一个名为“hm”的hashmap,它生成以下输出(注意: 这只是一个选择):

此输出是使用以下代码创建的(注意:此处未显示类代码的其余部分):

最终,必须计算每个位置(关键点)的平均值,但这是一个问题,我认为,当我知道如何做上述工作时,我可以自己解决这个问题


编辑:实际输出要大得多!想想100多个hashmaps,其中有100多个键。

试试类似的东西

   newHashMap.put(key1,map1.get(key1)+map2.get(key1)+map3.get(key1));
public Map<Integer, Integer> combine(List<Map<Integer, Integer>> maps) {
    Map<Integer, Integer> result = new HashMap<Integer, Integer>();
    for (Map<Integer, Integer> map : maps) {
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            int newValue = entry.getValue();
            Integer existingValue = result.get(entry.getKey());
            if (existingValue != null) {
                 newValue = newValue + existingValue;
            }
            result.put(entry.getKey(),  newValue);
        }
    }
    return result;
}
公共地图合并(列表地图){
映射结果=新的HashMap();
用于(地图:地图){
对于(Map.Entry:Map.entrySet()){
int newValue=entry.getValue();
整数existingValue=result.get(entry.getKey());
if(existingValue!=null){
新值=新值+现有值;
}
result.put(entry.getKey(),newValue);
}
}
返回结果;
}
基本上:

  • 为结果创建一个新映射
  • 迭代每个贴图
  • 取每个元素,如果已经存在于结果中,则增加值,如果不存在,则将其放入映射中
  • 返回结果

    • 试试这样的东西

      public Map<Integer, Integer> combine(List<Map<Integer, Integer>> maps) {
          Map<Integer, Integer> result = new HashMap<Integer, Integer>();
          for (Map<Integer, Integer> map : maps) {
              for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                  int newValue = entry.getValue();
                  Integer existingValue = result.get(entry.getKey());
                  if (existingValue != null) {
                       newValue = newValue + existingValue;
                  }
                  result.put(entry.getKey(),  newValue);
              }
          }
          return result;
      }
      
      公共地图合并(列表地图){
      映射结果=新的HashMap();
      用于(地图:地图){
      对于(Map.Entry:Map.entrySet()){
      int newValue=entry.getValue();
      整数existingValue=result.get(entry.getKey());
      if(existingValue!=null){
      新值=新值+现有值;
      }
      result.put(entry.getKey(),newValue);
      }
      }
      返回结果;
      }
      
      基本上:

      • 为结果创建一个新映射
      • 迭代每个贴图
      • 取每个元素,如果已经存在于结果中,则增加值,如果不存在,则将其放入映射中
      • 返回结果

      是什么阻止您遍历所有3个哈希映射的条目并对每个键的值求和?如果您知道键是1到11,只需使用
      get()
      循环并求和即可。如果您不知道这些键,但知道所有贴图都有完全相同的键,只需迭代其中一个键,然后使用
      get()
      求和即可。谢谢您,我将尝试您的建议!是什么阻止您对所有3个哈希映射的条目进行迭代并对每个键的值求和?如果您知道键是1到11,只需使用
      for
      循环并使用
      get()
      求和即可。如果您不知道这些键,但知道所有贴图都有完全相同的键,只需迭代其中一个键,然后使用
      get()
      求和即可。谢谢您,我将尝试您的建议!但是如果我有100个哈希映射呢?这里就是这种情况,这只是一个很小的输出示例。我只是举一个例子,说明你可以这样做,因为你应该写循环。@nikeshjoshi我的观点只是关于如何选择变量的名称,key1似乎只在第一个映射上循环。如果在所有三个贴图关键点上循环,它会起作用(如果在同一关键点上不循环两次)。我没有下载但是如果我有100个哈希图呢?这里就是这种情况,这只是一个很小的输出示例。我只是举一个例子,说明你可以这样做,因为你应该写循环。@nikeshjoshi我的观点只是关于如何选择变量的名称,key1似乎只在第一个映射上循环。如果在所有三个贴图关键点上循环,它会起作用(如果在同一关键点上不循环两次)。我没说对不起谢谢你的解释!我绝对可以用这个例子做点什么!谢谢你的清楚解释!我绝对可以用这个例子做点什么!
         newHashMap.put(key1,map1.get(key1)+map2.get(key1)+map3.get(key1));
      
      public Map<Integer, Integer> combine(List<Map<Integer, Integer>> maps) {
          Map<Integer, Integer> result = new HashMap<Integer, Integer>();
          for (Map<Integer, Integer> map : maps) {
              for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                  int newValue = entry.getValue();
                  Integer existingValue = result.get(entry.getKey());
                  if (existingValue != null) {
                       newValue = newValue + existingValue;
                  }
                  result.put(entry.getKey(),  newValue);
              }
          }
          return result;
      }