为什么这会在尝试增加值并将其放回HashMap时引发编译错误?

时间:2015-04-18 22:11:55

标签: java hashmap hashtable

在最后一行中,我试图获取值,增加它然后再将其放回去。问题:

  1. 为什么会引发编译错误"操作的参数无效++ / - "

  2. 为了增加此特定示例中的值,有更好的方法吗?

    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 ++/--
    

2 个答案:

答案 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();