Hashtable的缺点

时间:2014-06-17 10:22:19

标签: java hashtable

  1. Hashtable可以包含任意数量的记录吗?
  2. 如果我们有更多记录(例如,大约10000条记录),使用Hashtable是否有效?
  3. 在效率方面使用Hashtable是否有任何缺点。

    感谢。

5 个答案:

答案 0 :(得分:3)

HashTable的disadvantage在效率方面是:

  

当发生多次冲突时,哈希表变得非常低效。   虽然极不均匀的哈希分布极不可能   偶然出现,一个有哈希知识的恶意对手   函数可能能够向创建的哈希提供信息   导致过度碰撞的最坏情况行为,导致非常严重   表现不佳,例如拒绝服务攻击。[21]至关重要   应用程序,可以使用通用哈希;一个数据结构   更好的最坏情况保证可能更可取。[22]

你可以使用HashMap,因为它们更好,而不是HashTable。

答案 1 :(得分:1)

一般而言,HashMap在效率方面将是更好的选择,因为它不是同步的。

看看这个:

http://blog.manishchhabra.com/2012/08/the-5-main-differences-betwen-hashmap-and-hashtable/

答案 2 :(得分:1)

Hashtable被弃用(尽可能好)。根据您是否希望数据是线程安全的,使用HashMapConcurrentHashMap

答案 3 :(得分:0)

这取决于实施。实现哈希表的一种方法是使初始表不那么大,如果加载因子(已使用元素与可用时隙的比率)增加超过阈值,则增加表大小 查看维基百科文章以获得更多理解 http://en.wikipedia.org/wiki/Hash_table#Perfect_hash_function

好的,谢谢你的建议,我是stackoverflow的新手。所以对问题1的回答是 是的,只要不溢出,就可以添加任意数量的记录。  回答2个问题是Hashtable是同步的(因此开销)所以如果你不需要同步和线程安全那么去HashMap

答案 4 :(得分:0)

在使用会导致大量冲突的哈希算法时,不适合使用哈希表,因为它将更改查找并从O(1)插入到O(log n)。