如果我有以下内容:
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
的密钥?以及如何增加它?
答案 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回答的更新版本。