hashmap java中arraylist的总和 [英] Sum values of arraylist in hashmap java

查看:87
本文介绍了hashmap java中arraylist的总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想对hashmap java中的arraylist值求和.以下是我的代码:

I want to sum values of arraylist in hashmap java. Following is my code:

Map hm = new HashMap();
for(int i=0; i<dataArray().length; i++){
    Arraylist valueHashMap = new Arraylist();
    valueHashMap.add(0, aArray[i]);
    valueHashMap.add(1, bArray[i]);
    valueHashMap.add(2, cArray[i]);

    if (hm.containsKey(dArray[i])){
        Arraylist newOne = new Arraylist();
        newOne.add(hm.get(dArray[i]));
        valueHashMap.add(newOne);
        hm.put(dArray[i], valueHashMap);
    }else{
        hm.put(dArray[i], valueHashMap);
    }
}
Iterator iterator = hm.keySet().iterator();
while(iterator.hasNext()){
String key = iterator.next().toString();
System.out.println(key + " " + hm.get(key));
}

输入键和值如下:

1 : 1, 2, 3
2 : 4, 5, 6
1 : 1, 2, 3

结果如下所示:

1 : [1, 2, 3, [[1, 2, 3]]]
2 : [4, 5, 6]

我希望结果像这样出来:

I want result to come out like this:

1 : [2, 4, 6]   //summary of values in arraylist of same key
2 : [4, 5, 6]

我应该如何求和hashmap中相同键的arraylist中的每个值?

How should I sum each values in arraylist of same key in hashmap?

推荐答案

我想我会这样做的:

    Scanner sc = new Scanner(System.in);
    Map<String, int[]> m = new HashMap<>();
    int n = 3;
    for (int i = 0; i < n; i++) {
        String[] s = sc.nextLine().split("[,\\s:]+");
        int[] arr = new int[s.length - 1];
        boolean cn = m.containsKey(s[0]);
        for (int j = 0; j < arr.length; j++) {
            arr[j] = Integer.parseInt(s[j + 1]) + ((cn) ? m.get(s[0])[j] : 0);
        }
        m.put(s[0], arr);
    }
    for (String s : m.keySet()) {
        System.out.println(s + " : " + Arrays.toString(m.get(s)));
    }
    sc.close();

输入:

1 : 1, 2, 3
2 : 4, 5, 6
1 : 1, 2, 3

输出:

1 : [2, 4, 6]
2 : [4, 5, 6]

这篇关于hashmap java中arraylist的总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆