我知道HashSet
的查找/添加时间复杂度为 O(1)。但是如果Set
持有List
,我担心它是否具有相同的时间复杂度,对我来说很难相信它只需要O(1),我们如何在List上进行散列? / p>
由于
答案 0 :(得分:2)
hashCode
的{p> List
(例如,请参阅AbstractList
的实现)是List
的所有元素的函数。 equals
实施也是如此。
因此,Set<List<SomeType>>
中的查找/添加将O(k)
k
,其中List
是您要查找/添加的k
的大小。但是,由于Set
不依赖于Set
中的元素数量,因此查找时间仍然是O(1)
元素数量的常数函数,因此您可以仍然说查找需要Collection
,因为Collection
中查找/添加的运行时间是根据getTime()
中元素的数量计算的,而不是单个元素的大小。