所以我有一个名为“ hm”的哈希图,它产生以下输出(注意:
这只是一个选择):
{1=35, 2=52, 3=61, 4=68, 5=68, 6=70, 7=70, 8=70, 9=70, 10=72, 11=72}
{1=35, 2=52, 3=61, 4=68, 5=70, 6=70, 7=70, 8=68, 9=72, 10=72, 11=72}
{1=35, 2=52, 3=61, 4=68, 5=68, 6=70, 7=70, 8=70, 9=72, 10=72, 11=72}
此输出是使用以下代码创建的(注意:此处未显示其他类代码):
private int scores;
HashMap<Integer,Integer> hm = new HashMap<>();
for (int i = 0; i < fileLines.length(); i++) {
char character = fileLines.charAt(i);
this.scores = character;
int position = i +1;
hm.put(position,this.scores);
}
System.out.println(hm);
我正在尝试将所有这些哈希图放到一个哈希图中,每个键的值之和作为值。我熟悉Python的defaultdict,但找不到等效的工作示例。我已经搜索了一个答案并在下面打了这些答案,但是它们不能解决我的问题。
How to calculate a value for each key of a HashMap?
what java collection that provides multiple values for the same key
is there a Java equivalent of Python's defaultdict?
所需的输出将是:
{1=105, 2=156, 3=183 , 4=204 ,5=206 ..... and so on}
最终必须计算每个位置(键)的平均值,但这是一个问题,我想我可以在自己完成上述操作的情况下自行解决。
编辑:实际输出要大得多!考虑具有100多个键的100多个哈希图。
最佳答案
试试这样的东西
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;
}
基本上:
为结果创建一个新地图
遍历每张地图
取每个元素,如果结果中已经存在,则将其值增加(如果未将其放入地图中)
返回结果
关于java - 如何使用相同的键计算不同哈希图的值之和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37699995/