3

キーでグループ化し、JavaのHashMapに値を追加する方法はありますか?

    HashMap<String, Integer> map = new HashMap<String, Integer>();

    map.put("A", 2);
    map.put("A", 3);
    map.put("B", 4);
    map.put("A", 5);
    map.put("B", 4);    

結果は

   A = 10
   B = 8

どんな助けでも役に立ちます!!!

4

5 に答える 5

5

このようなものが機能するはずです:

public void incrementValue(HashMap<String, Integer> map, String key, int value) {
    Integer old = map.get(key);
    if (old == null) {
        map.put(key, value);
    } else {
        map.put(key, value + old);
    }
}
于 2012-10-20T17:56:52.283 に答える
4

これを行うユーティリティメソッドを記述します。

Map<String, Integer> map = new HashMap<>();
.........
public void putAndIncrement(String key, int value) {
    Integer prev = map.get(key);
    Integer newValue = value;
    if (prev != null) {
        newValue += prev.intValue();
    }
    map.put(newValue);
}
于 2012-10-20T17:57:21.010 に答える
3

ハッシュマップは使用しないでください。

map.put("A", 2);
map.put("A", 3);

2番目のプットは最初のプットを上書きします。リストを使用します。それをループして、自分で追加を行います。

于 2012-10-20T17:55:12.880 に答える
2

この方法でグループ化できます

HashMap<String, ArrayList<Integer>>

あなたが見るときはいつでもAそのArrayListに値を追加し続けます

于 2012-10-20T17:54:27.390 に答える
0

集約された値の一部を追跡するには、Javaアルゴリズムに関する回答を参照してください。

private static class MutableValue {
    double value;
    public MutableValue(double value) {
        this.value = value;
    }
    public void add(double value) {
        this.value += value;
    }
}

MutableValue value = sourceNameMap.get(ticketId);
if (oldValue == null) {
    sourceNameMap.put(new MutableValue(entryValue));
} else {
    value.add(entryValue);
}
于 2012-10-20T18:00:02.877 に答える