给定以下语句(取自this Oracle Java教程),它与Collections类的binarySearch()方法有关:



为什么binarySearch()的返回值不只返回负索引,而不返回负索引减去1? (上述引号的粗体部分)。

简而言之:为什么是(-(insertion point) - 1)而不是(-(insertion point))

提前致谢。

最佳答案

那是因为-(insertion point)会模棱两可。您将无法分辨以下几点:

0位置找到

  • 项目;
  • 找不到
  • 项目,插入点是0

  • 使用-(insertion point) - 1,上述两种情况导致不同的返回值(0-1)。

    10-06 05:47