如何用相同的密钥计算不同哈希图的值之和?

时间:2016-06-08 10:31:49

标签: java hashmap

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

{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);

我要做的是将所有这些哈希映射放在一个hashmap中,其值为每个键值的总和。我熟悉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个密钥的哈希映射。

2 个答案:

答案 0 :(得分:3)

尝试类似的东西

public User() {
    Id = Guid.NewGuid();
    DateCreated = DateTime.UtcNow;
    StateId = STATES.NEW.ID;
}

基本上:

  • 为结果创建新地图
  • 迭代每张地图
  • 获取每个元素,如果已经存在于结果中,则增加该值,如果不将其放在地图中
  • 返回结果

答案 1 :(得分:1)

   newHashMap.put(key1,map1.get(key1)+map2.get(key1)+map3.get(key1));
相关问题