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

时间:2018-03-22 08:19:49

标签: 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);

那我怎样才能获得mAttibutesMap的密钥?以及如何增加它?

3 个答案:

答案 0 :(得分:7)

1。首先,您可以像这样直接使用Map<Attribute , Integer>put

 
mAttributesMap.put(Attribute.ONE, 5);
mAttributesMap.put(Attribute.TWO, 5);

2。要增加键的值,您可以执行以下操作,获取值,然后使用put再次+1,因为{{1已经存在它只会替换现有的(地图中的键是唯一):

key

3。要获得更通用的解决方案,您可以这样做:

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

答案 1 :(得分:2)

您无法直接编辑地图,但可以使用以下内容替换值:

mAttributesMap.put(Attribute.ONE.name(), 10);

答案 2 :(得分:0)

如果知道该密钥存在于HashMap中,则可以执行以下操作:

int currentValue = mAttributesMap.get(Attribute.ONE.name());
mAttributesMap.put(Attribute.ONE.name(), currentValue+1);

如果该密钥可能存在于HashMap中或可能不存在,则可以执行以下操作:

int currentValue = 0;
if (mAttributesMap.containsKey(Attribute.ONE.name())) {
  currentValue = mAttributesMap.get(Attribute.ONE.name());
}
mAttributesMap.put(Attribute.ONE.name(), currentValue+1);

希望对您有所帮助!谢谢。和平。

p.s。这是David Geirola在18年3月22日8:22回答的更新版本。