使用单个查找初始化Java Map中的条目(如在C ++中)

时间:2011-08-24 16:00:45

标签: java collections

在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 ++中,我可以通过一次查找来完成它。

2 个答案:

答案 0 :(得分:6)

如果这是你的意思,并发映射有一个原子putIfAbsent方法。

答案 1 :(得分:0)

我对C ++内部实现并不完全熟悉,但我对它在性能/效率方面的单一操作有一些疑问。

即使它是,为什么你一定需要Java中的一个?或者甚至想要一个?

假设它看起来像:

lookup(object) // side effect of object insertion

除了并发之外,我不希望在Java中使用类似的东西。

编辑:澄清