如何增加一个Integer-lvalue

Arn*_*rne 2 java integer map

我有一张类型的地图

Map<Character, Integer> tmp;
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某些时候,我执行以下操作:

if(tmp.containsKey(key))
    tmp.put(key, tmp.get(key)+1)
Run Code Online (Sandbox Code Playgroud)

在第二行,我更愿意做类似的事情

    tmp.get(key)++;
Run Code Online (Sandbox Code Playgroud)

我期望工作,因为我应该从get-call获得对Integer对象的引用.但事实并非如此,除了int语法之外,Integer似乎没有更新功能.围绕第一个构造没有办法吗?

Roh*_*ain 6

由于Integer类对象是不可变的,因此无法对其进行修改.您必须将结果放回地图中.一种选择是使用可变值,如AtomicInteger:

Map<Character, AtomicInteger> tmp;
tmp.get(ch).incrementAndGet();
Run Code Online (Sandbox Code Playgroud)