据报道,从Java JDK 1.3.1到JDK 1.4.0,HashMap的速度慢了5倍(见这里)。在Java 6中,HashMap的现状如何?是否建议使用?谢谢。
这个bug在1.4.0_02和1.4.1中被标记为已修复,因此在Java 1.6中不需要担心其性能问题。
(如果您处于多线程环境中,可能需要使用ConcurrrentHashMap。)
仅供参考,如果您还不知道,哈希表(Hashmap)和散列表(Hashtable)的区别在于Hashtable是同步的,不允许空键值,而主要区别在于HashMap具有增强的哈希函数,可以防止两个不同的对象进入单个桶或防止哈希冲突。
@Suresh 说HashMap能完全防止冲突是不正确的。实际上,在每个桶中,都包含了一个单向链表的实现方式。因此,在HashMap中仍然会发生冲突。我承认我不确定与Hashtable相比碰撞的百分比。