这不是代码问题,我只是想了解哈希图的概念和时间复杂度。
好吧,我认为我知道hashMaps / sets的工作原理,并且我认为我理解HashMaps.get为什么具有恒定的时间,但是当我们具有很大的hashMap时,存储值的索引应该重叠。当2个哈希码解析为相同的索引时,它们将存储在此索引的LinkList中,对吗?。
不是所有元素都作为链接列表存储在一个索引中。现在不应该在O(n)中以最坏的情况运行HashMap.get。
是,HashMap
的最坏情况下的时间复杂度是O(n),其中n
是存储在一个存储桶中的元素数。最坏的情况是HashMap的所有n
元素都存储在一个存储桶中。
但是,如果对每个存储桶都执行二进制搜索,则可以改善这一点。在那种情况下,最差的时间复杂度将是O(log(n))
,因为binary search tree
用于存储元素而不是doubly linked list
。