我对HashMap的理解是顺序不可预测,因此搜索时间也是不可预测的。但是,在最近的一次采访中有人问我这个问题:“ HashMap是否有确定的搜索时间?”

最佳答案

HashMap是一种概率数据结构,平均查找时间复杂度为O(1),但是在最坏的情况下,查找所需的时间可能长达O(n)。

在很多“特殊”情况下,保证哈希可以在O(1)时间执行查找。

例如:


HashMap为空
HashMap只有一个元素
HashMap没有冲突(存储桶中的元素不能超过一个)


如果预先知道所有密钥,则可以生成“完美”的散列函数,以保证第3种情况。在实践中,这用于生成符号查找表,在该表中预先知道一组符号(字符串)。

看到:


http://en.wikipedia.org/wiki/Hash_table
http://en.wikipedia.org/wiki/Perfect_hash_function
http://www.gnu.org/software/gperf/

关于java - HashMap具有确定的搜索时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22461316/

10-11 22:20
查看更多