HashMap有明确的搜索时间吗?

时间:2014-03-17 17:34:56

标签: java collections

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

2 个答案:

答案 0 :(得分:2)

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

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

例如:

  1. HashMap为空
  2. HashMap只有一个元素
  3. HashMap没有冲突(没有存储桶只有一个元素)
  4. 如果事先知道所有键,则可以生成保证情况#3的“完美”散列函数。这在实践中用于生成符号查找表,其中一组符号(字符串)是预先知道的。

    请参阅:

答案 1 :(得分:0)

hashMap有一个可变的检索时间.. !!

hashMap通过使用哈希函数找到位置。但哈希函数需要一些时间才能完成。它基本上是一个算法,因此该算法的执行需要一些时间.. !!

接下来的事情是,即使哈希函数完成,它也会为多个条目(在某些情况下)生成相同的位置。因此,在这种情况下,它希望更深入。这也需要更多时间.. !!

  

hashMap指向具有共同条目的唯一情况   检索时间是,数据必须始终产生唯一的hashKey。   也就是说,时间总是等于Hash的执行   算法

但是在数组的情况下,检索时间总是相同的,因为它可以直接访问数组的位置,时间总是为O(1)。