在c++中,我可以在map中查找键并插入它,如果它不存在,则只需查找一次。我可以在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++中,我可以用一个简单的查找来完成。
并发映射有一个原子putIfAbsent
方法,如果这是你的意思。
我对c++的内部实现并不完全熟悉,但我对它作为一个单一操作的性能/效率有一些怀疑。
即使是,为什么在Java中一定需要一个呢?或者甚至想要一个?
假设它看起来像:
lookup(object) // side effect of object insertion
除了并发性,我不希望在Java中出现这样的东西。
编辑:澄清