zig*_*ggy 4 java oop string scjp
根据文件:
public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)
Run Code Online (Sandbox Code Playgroud)
使用二进制搜索算法在指定的数组中搜索指定的对象.
在进行此调用之前,必须根据指定的比较器(通过sort(T [],Comparator)方法)将数组按升序排序.
如果未排序,则结果未定义.如果数组包含多个与指定对象相等的元素,则无法保证找到哪个元素.
以上是否意味着该Arrays.binarySearch方法只能在Array按升序排序时使用?
我测试了它,如下所示
class Unturned {
public static void main(String[] args) {
String[] chars = {"a", "b", "c", "e","f","h","i"};
MySort ms = new MySort();
Arrays.sort(chars, ms);
for(String c : chars ) System.out.print(c + " ");
System.out.println("\n" + Arrays.binarySearch(chars, "d", ms));
}
static class MySort implements Comparator<String> {
public int compare(String a, String b) {
return b.compareTo(a);
} } }
Run Code Online (Sandbox Code Playgroud)
输出:
i h f e c b a
-5
Run Code Online (Sandbox Code Playgroud)
-5将插入点置于具有值c的元素,这是正确的.(即-4-1).
为什么文档说数组必须按升序排序?