java Arrays.binarySearch无法找到目标

String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"}; // Search for the word "cat" int index = Arrays.binarySearch(sortedArray, "Quality"); 

我总是得到-3 。 问题出在"Name" 。 为什么我的数组中没有"Name" ? 任何想法?

要使用binarySearch ,您需要先自己对数组进行排序:

 String[] sortedArray = new String[]{"Quality", "Name", "Testing", "Package"}; java.util.Arrays.sort(sortedArray); int index = Arrays.binarySearch(sortedArray, "Quality"); 

必须对数组进行排序。 来自binarySearch()的Javadoc:

在进行此调用之前,必须根据元素的自然顺序将范围按升序排序。 如果未排序,则结果未定义。

必须对数组进行排序才能使二进制搜索起作用。 binarySearch的javadoc说:

在进行此调用之前,必须根据元素的自然顺序(通过sort(Object [])方法)将数组按升序排序。 如果未排序,则结果未定义。

(重点补充。)

原因很简单。 二进制搜索算法具有对输入数组进行排序的前提条件。