我有一张类型的地图
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似乎没有更新功能.围绕第一个构造没有办法吗?
由于Integer类对象是不可变的,因此无法对其进行修改.您必须将结果放回地图中.一种选择是使用可变值,如AtomicInteger:
Map<Character, AtomicInteger> tmp;
tmp.get(ch).incrementAndGet();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |