【发布时间】:2017-08-31 06:57:38
【问题描述】:
我想在我拥有的 HashSet 中有效地搜索一个对象。
我想知道 java 集合中定义的 contains() 方法是否使用二分查找?还是我应该编写自己的二分搜索算法?
【问题讨论】:
-
"HashSet" 和 "binary search" 不适合。原因:二分查找需要一个排序的(因此是有序的)集合,而 hash 集合根据定义是无序的。
-
"假设散列函数在桶中正确地分散元素,此类为基本操作(添加、删除、包含和大小)提供恒定的时间性能。"
-
HashSet没有排序,因此您将无法运行二进制搜索。contains()的工作方式:它计算contains()参数的“指纹”。然后它检查它是否知道这个指纹。完成。
标签: java collections binary-search