2016-07-06 26 views
0

arraylistの値を合計する場合は、hashmap javaです。次は私のコードです:ハッシュマップのarraylistの合計値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] 

同じキーのarraylistの値はhashmap

+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スタジオアプリケーション開発者とJavaバージョンでJavaを開発したのはJ2RE 1.4.1、Javaプラットフォームは5.1です。 – Yuki

関連する問題