数组搜索方法混淆

ben*_*enz 0 java collections

我很困惑Arrays.binarySearch(Object[], Object).

public class SearchObjArray {

    public  static void main(String[] args){

        String[] sa = {"one","two","three","four"};

        Arrays.sort(sa);

        for(String s : sa ){
            System.out.println(s + " ");
        }
        System.out.println("\n one = " + Arrays.binarySearch(sa,"thro"));
}
}
Run Code Online (Sandbox Code Playgroud)

程序运行时,它返回位置-4.我正在读书,它说,插入点表示为(-(insertionPoint)-1).为什么会这样?我无法理解这一点.

小智 5

插入点定义为将密钥插入阵列的点.

{"one","two","three","four"}
Run Code Online (Sandbox Code Playgroud)

排序是

{"four", "one", "three", "two"}
Run Code Online (Sandbox Code Playgroud)

然后throw来了three.所以插入点就是3.结果就是这样

(-(insertionPoint) -1) =
(-(3)              -1) =
-4
Run Code Online (Sandbox Code Playgroud)