给定java hashmap中的键,如何递增值?

Kut*_*kov -1 java hashmap

如果我有以下内容:

public enum Attribute {
     ONE, TWO, THREE
}

private Map<String, Integer> mAttributesMap = new HashMap<>();

mAttributesMap.put(Attribute.ONE.name(), 5);
mAttributesMap.put(Attribute.TWO.name(), 5);
Run Code Online (Sandbox Code Playgroud)

那么我怎样才能得到钥匙mAttibutesMap?以及如何增加它?

azr*_*zro 7

1.首先你可以直接使用a Map<Attribute , Integer>put像这样:

mAttributesMap.put(Attribute.ONE, 5);
mAttributesMap.put(Attribute.TWO, 5);
Run Code Online (Sandbox Code Playgroud)

2.要增加键的值,您可以执行以下操作,获取值,put再次使用+1,因为key已存在它将只替换现有键(映射中的键是唯一的):

public void incrementValueFromKey(Attribute key){
    mAttributesMap.computeIfPresent(key, (k, v) -> v + 1);
}
Run Code Online (Sandbox Code Playgroud)

3.要获得更通用的解决方案,您可以:

public void incrementValueFromKey(Attribute key, int increment){
    mAttributesMap.computeIfPresent(key, (k, v) -> v + increment);
}
Run Code Online (Sandbox Code Playgroud)