2016-07-06 39 views
0

我想总结arraylist的值hashmap java。以下是我的代码:hashList中Array列表的总和值java

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] 

我想结果出来是这样的:

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

我该如何总结e在hashmap的同一个密钥的arraylist中的ach值?

+0

在你的代码,hm.containsKey(dArray [I] ),您将数组添加到列表中。我认为这是你需要SUM数组元素的值的地方。 –

+0

什么是'dataArray','aArray','bArray'和'cArray' – RE60K

+0

它们是字符串数组。 – Yuki

回答

1

我想我会做了这样的:

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] 
+0

我不能写<>,:符号。 – Yuki

+0

@Yuki什么?为什么不? – RE60K

+0

我不知道!我在websphere studio application developer上开发了Java,Java版本是J2RE 1.4.1,Java平台是5.1。 – Yuki