在最后一行中,我试图获取值,增加它然后再将其放回去。问题:
为什么会引发编译错误"操作的参数无效++ / - "
为了增加此特定示例中的值,有更好的方法吗?
Map<String, Integer> map = new HashMap<>();
map.put("hello", 4);
// we wanna get 4 to increase it
map.put("hello",++(map.get("hello"))); // Invalid argument to operation ++/--
答案 0 :(得分:3)
您只能对变量{而不是任意表达式}执行++
。请改用... + 1
:
map.put("hello", map.get("hello") + 1);
或者,如果您使用的是Java 8:
map.merge("hello", 1, (a,b) -> a + b));
(请注意,Java没有与C ++引用相对应的任何功能。)
答案 1 :(得分:1)
您可以使用Apache commons MutableInt
Map<String, MutableInt> map = new HashMap<String, MutableInt>();
map.put("hello", new MutableInt(4));
map.get("hello").increment();