HashSet的<列表<整数>&GT;时间复杂度

时间:2017-02-14 07:18:22

标签: java hash

我知道HashSet的查找/添加时间复杂度为 O(1)。但是如果Set持有List,我担心它是否具有相同的时间复杂度,对我来说很难相信它只需要O(1),我们如何在List上进行散列? / p>

由于

1 个答案:

答案 0 :(得分:2)

hashCode的{​​p> List(例如,请参阅AbstractList的实现)是List的所有元素的函数。 equals实施也是如此。

因此,Set<List<SomeType>>中的查找/添加将O(k) k,其中List是您要查找/添加的k的大小。但是,由于Set不依赖于Set中的元素数量,因此查找时间仍然是O(1)元素数量的常数函数,因此您可以仍然说查找需要Collection,因为Collection中查找/添加的运行时间是根据getTime()中元素的数量计算的,而不是单个元素的大小。