其中Collection
是:
binarySearch(List list, Object key)
为什么二进制搜索不适用于Set
?为什么它只用于List
?
有什么具体原因吗?
其中Collection
是:
binarySearch(List list, Object key)
为什么二进制搜索不适用于Set
?为什么它只用于List
?
有什么具体原因吗?
二分查找意味着一个已排序的容器。一个集合要么是无序的(HashSet
),在这种情况下不能执行二分查找,要么是有序的(TreeSet
),在这种情况下它的查找操作已经和二分查找一样有效(即O(Log2(N))
)。
二进制搜索适用于有序集合。套装未订购。
在这种情况下,二进制搜索仅在 List 已排序和排序时才有效。即它不适用于所有列表,仅适用于预先排序的列表。
一个集合没有排序,也可能没有排序。
如果 Set 已排序,可以使用 NavigableSet 的方法之一
A set is unordered, and doesn't have indexes for the elements it contains. Therefore a binarySearch() method that returns the index of the element does not make sense.