在C ++中,我可以在地图中查找一个键并插入它,如果它不存在单个查找的成本。我可以用Java做同样的事吗?
更新:
(对于那些必须看代码的人。)
long id = 0xabba;
int version = 0xb00b;
for (List<Object> key : keys) {
if (!index.containsKey(key)) {
index.put(key, Maps.<Long,Integer>newHashMap());
}
index.get(key).put(id, version);
}
首次将键插入地图时,有两个查找。在C ++中,我可以通过一次查找来完成它。
答案 0 :(得分:6)
如果这是你的意思,并发映射有一个原子putIfAbsent
方法。
答案 1 :(得分:0)
我对C ++内部实现并不完全熟悉,但我对它在性能/效率方面的单一操作有一些疑问。
即使它是,为什么你一定需要Java中的一个?或者甚至想要一个?
假设它看起来像:
lookup(object) // side effect of object insertion
除了并发之外,我不希望在Java中使用类似的东西。
编辑:澄清