那是因为-(insertion point)模棱两可。您将无法分辨以下几点:
在位置找到的物品0;找不到项目,插入点是0。使用-(insertion point) - 1,上述两种情况导致不同的返回值(0和-1)。
解决方法给定以下声明(取自该OracleJava教程),该声明与Collections类的binarySearch()方法有关:
两种形式的返回值都相同。如果列表包含搜索关键字,则返回其索引。如果不是,则返回值为 (-(插入点)-1),其中插入点是将值插入到List中的点,或者第一个元素的索引大于该值或list.size。 (),如果List中的所有元素都小于指定的值。
为什么返回值binarySearch()not只返回负索引而不是负索引减去1?(上述引号的粗体部分)。
简而言之:为什么(-(insertion point) - 1)而且不仅如此(-(insertion point))?
提前致谢。