鉴于以下语句,取自此 Oracle Java教程,与类Collections的binarySearch()方法有关:
两个表单的返回值相同.如果List包含搜索键,则返回其索引.如果不是,则返回值为 ( - (插入点) - 1),其中插入点是将值插入List的点,或者第一个元素的索引大于值或list.size ()如果List中的所有元素都小于指定值.
为什么返回值binarySearch()不仅仅返回负指数而不是负指数减1?(上面引用的粗体部分).
简而言之:为什么(-(insertion point) - 1)而不仅仅是(-(insertion point))?
提前致谢.
说说Arrays中定义的这个方法:
public static int binarySearch(int[] a, int key)
我无法理解为什么返回(-(insertion point) - 1)而不是-(insertion point)在数组中找不到匹配项的情况。
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(int[],%20int)
这可能是Math.abs((-(insertion point) - 1))等于数组大小的原因吗?  
如果你想知道我为什么要问这个问题,我看到为了找到插入点,我基本上必须做减法。
int returnedVal = Arrays.binarySearch(arr, needle);
if (returnedVal < 0) 
     insertionPoint = Math.abs(returnedVal) - 1;