我应该使用哪个Map类?

命令

http://docs.oracle.com/javase/7/docs/api/java/util/Map.html中,我看到了19个实现Map接口的类。我应该使用哪一个?我想将整数映射到整数。我将使用Array,但在许多示例中都可以看到HashMap,因此我正在考虑:

Map<Integer, Integer> myMap = Collections.synchronizedMap(new HashMap<Integer, Integer>());

基本上,我想模拟在其他语言(例如PHP)上可以找到的不太严格的数组,在其中我可以将任何整数赋给任何值而无需关心固定长度或使用列表。

布赖恩·阿格纽

最简单,最直接的选择是使用HashMap<Integer, Integer>()您不必担心线程化,也不必为排序时的性能损失付出代价(如TreeMap)。

您还询问线程。请注意,HashMap本身不是线程安全的,并且对其同时进行的操作会崩溃(例如,映射会进行内部状态更改,例如根据puts调整大小,并且同时puts可能会失败)。因此ConcurrentHashMap可能将需要一个。但是请注意,如果要执行多个原子操作,则可能需要围绕该对象进行同步。

if (!map.contains(key)) {
   map.put(key, ...);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章