在Java Map中通过单次查找初始化条目(类似于c++)



在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中出现这样的东西。

编辑:澄清

最新更新