数组搜索方法混淆

时间:2015-02-16 09:55:35

标签: 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"));
}
}

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

1 个答案:

答案 0 :(得分:5)

  

插入点定义为将键插入数组的点。

{"one","two","three","four"}

已排序

{"four", "one", "three", "two"}

throw位于three之后。所以插入点将是3。结果就是

(-(insertionPoint) -1) =
(-(3)              -1) =
-4