是否有一种方法可以按键进行分组,并在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
任何帮助都会有所帮助!!!
答案 0 :(得分: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);
}
}
答案 1 :(得分: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);
}
答案 2 :(得分:3)
您不应该使用散列图。
map.put("A", 2);
map.put("A", 3);
第二次改写覆盖了第一次。使用列表。循环通过它并自己添加。
答案 3 :(得分:2)
您可以这样分组
HashMap<String, ArrayList<Integer>>
每当您看到A
继续将值添加到其ArrayList
答案 4 :(得分:0)
请参阅Java algorithm to track parts of aggregated values上的回答:
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);
}