HashMap group by(Java)

有没有办法我们可以按Key分组并在Java中的HashMap中添加值

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

结果是

  A = 10 B = 8 

任何帮助都会有所帮助!

写实用程序方法执行此操作:

 Map 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); } 

像这样的东西应该工作:

 public void incrementValue(HashMap map, String key, int value) { Integer old = map.get(key); if (old == null) { map.put(key, value); } else { map.put(key, value + old); } } 

您不应该使用hashmap。

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

第二次改写覆盖第一次投入。 使用列表。 循环通过它自己做添加。

你可以用这种方式分组

 HashMap> 

每当你看到A继续将值添加到其ArrayList中

请参阅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); }