我正在使用Set
个项目。
Set<Objects> myObjects
此Set
可能包含数千项。对我来说,重要的是可以通过O(1)检查此Set
中项目的存在。
我知道contains
有一种Set
方法,但它的工作顺序是什么?它是否由O(1)工作?
如果效率不高,如何通过O(1)检查存在?
答案 0 :(得分:5)
HashSet.contains()
的预计运行时间为O(1)
来自Javadoc:
此类为基本操作(添加,删除,包含和大小)提供恒定的时间性能,假设散列函数在桶之间正确地分散元素。迭代此集合需要的时间与HashSet实例的大小(元素数量)加上&#34;容量&#34;的总和成正比。支持HashMap实例(桶的数量)。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要。
答案 1 :(得分:1)