在效率方面使用Hashtable是否有任何缺点。
感谢。
答案 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被弃用(尽可能好)。根据您是否希望数据是线程安全的,使用HashMap
或ConcurrentHashMap
。
答案 3 :(得分:0)
这取决于实施。实现哈希表的一种方法是使初始表不那么大,如果加载因子(已使用元素与可用时隙的比率)增加超过阈值,则增加表大小 查看维基百科文章以获得更多理解 http://en.wikipedia.org/wiki/Hash_table#Perfect_hash_function
好的,谢谢你的建议,我是stackoverflow的新手。所以对问题1的回答是 是的,只要不溢出,就可以添加任意数量的记录。 回答2个问题是Hashtable是同步的(因此开销)所以如果你不需要同步和线程安全那么去HashMap
答案 4 :(得分:0)
在使用会导致大量冲突的哈希算法时,不适合使用哈希表,因为它将更改查找并从O(1)插入到O(log n)。