【发布时间】:2016-10-08 13:46:22
【问题描述】:
所以我有一个名为“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 个键的哈希图。
【问题讨论】:
-
是什么阻止您遍历所有 3 个 HashMap 的条目并对每个键的值求和?
-
如果您知道键是 1 到 11,只需
for循环并使用get()求和。如果您不知道键,但知道所有映射具有完全相同的键,只需从其中一个中迭代键,然后使用get()求和。 -
谢谢你,我会试试你的建议!