Java HashMap; 是否值得推荐?

4
据报道,从Java JDK 1.3.1到JDK 1.4.0,HashMap的速度慢了5倍(见这里)。在Java 6中,HashMap的现状如何?是否建议使用?谢谢。

你打算在哪里使用它? - jmj
4
为什么没有评论的负评?这听起来很有趣。因此:+1。 - Christian Severin
问题很清楚。这个 bug 已经修复了还是仍然比 Java 1.3.1 慢五倍? - Luixv
1
我并不是那个给你投反对票的人。 - jmj
3
大多数人几乎每天都使用HashMap。 这是一个核心类,每个人都经常需要,并且几乎所有第三方库都在使用它。 不用担心,它的效率很高,运行良好。 - Sean Patrick Floyd
在错误报告中它说“修复已交付”,是吗?担心8年前修复的错误似乎是一种毫无用处的消遣。此外,即使在那时,HashMap通常绝对不是慢5倍 - 问题实际上是由于一项使实现在大多数情况下更快的更改引起的 - 它只是在非常特定的情况下导致了问题。 - Michael Borgwardt
3个回答

11

这个bug在1.4.0_02和1.4.1中被标记为已修复,因此在Java 1.6中不需要担心其性能问题。

(如果您处于多线程环境中,可能需要使用ConcurrrentHashMap。)


0

仅供参考,如果您还不知道,哈希表(Hashmap)和散列表(Hashtable)的区别在于Hashtable是同步的,不允许空键值,而主要区别在于HashMap具有增强的哈希函数,可以防止两个不同的对象进入单个桶或防止哈希冲突。


0

@Suresh 说HashMap能完全防止冲突是不正确的。实际上,在每个桶中,都包含了一个单向链表的实现方式。因此,在HashMap中仍然会发生冲突。我承认我不确定与Hashtable相比碰撞的百分比。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接