性能如何在100万个项目散列表和100个项目散列表之间变化

use*_*717 2 hashtable data-structures

我知道散列表可能存在性能问题,但是100万项的散列表怎么能比100项的散列表快?

Bro*_*ass 11

这一切都取决于冲突的数量:如果哈希表中没有任何冲突,有100万个项目,它将比具有100个项目和100个冲突的冲突更快.

如果没有冲突,则查找将仅使用散列键和模数O(1)(参见完美散列).在碰撞的情况下(假设散列表为数组和链接在链表中的碰撞),你必须顺序遍历所有这些,直到你找到有问题的项目,这是100%碰撞率的最坏情况(想想恒定散列函数即)将是O(n).


Sea*_*oyd 5

这取决于所使用的散列算法的效率.

如果小地图中有许多碰撞,而较大的地图中没有碰撞,那么较大的碰撞会更快.

阅读HashMapjavadocs以了解初始容量负载因子,并阅读有关哈希码(从头开始Object.hashCode()).(Hashtable是一个古老的遗物,不要使用它.)