二进制搜索列表但不搜索集合

时间:2012-08-14 13:48:15

标签: java collections

<{1>}中的

是:

Collection

为什么二进制搜索不适用于binarySearch(List list, Object key) ?为什么只适用于Set

任何具体原因?

4 个答案:

答案 0 :(得分:8)

二进制搜索意味着一个已排序的容器。一个集合是无序的(HashSet),在这种情况下无法执行二进制搜索,或者它是有序的(TreeSet),在这种情况下,它的查找操作已经像二进制搜索一样有效(即O(Log2(N)))。

答案 1 :(得分:5)

二进制搜索适用于有序集合。 套装没有订购。

答案 2 :(得分:4)

在这种情况下,只有在对List进行排序和排序时,二进制搜索才有效。即它不适用于所有列表,只有预先排序的列表。

订单未订购,可能无法排序。

如果Set已排序,则可以使用NavigableSet

的其中一种方法

答案 3 :(得分:3)

集合是无序的,并且没有包含它的元素的索引。因此,返回元素索引的binarySearch()方法没有意义。