Java 如何计算具有相同密钥的不同哈希映射的值之和?
因此,我有一个名为“hm”的hashmap,它生成以下输出(注意: 这只是一个选择): 此输出是使用以下代码创建的(注意:此处未显示类代码的其余部分): 最终,必须计算每个位置(关键点)的平均值,但这是一个问题,我认为,当我知道如何做上述工作时,我可以自己解决这个问题Java 如何计算具有相同密钥的不同哈希映射的值之和?,java,hashmap,Java,Hashmap,因此,我有一个名为“hm”的hashmap,它生成以下输出(注意: 这只是一个选择): 此输出是使用以下代码创建的(注意:此处未显示类代码的其余部分): 最终,必须计算每个位置(关键点)的平均值,但这是一个问题,我认为,当我知道如何做上述工作时,我可以自己解决这个问题 编辑:实际输出要大得多!想想100多个hashmaps,其中有100多个键。试试类似的东西 newHashMap.put(key1,map1.get(key1)+map2.get(key1)+map3.get(key1));
编辑:实际输出要大得多!想想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);
}
}
返回结果;
}
基本上:
- 为结果创建一个新映射
- 迭代每个贴图
- 取每个元素,如果已经存在于结果中,则增加值,如果不存在,则将其放入映射中
- 返回结果
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;
}