java.util.Arrays.binarySearch() 方法用于使用二进制文件在指定数组中搜索指定对象搜索算法。在进行此调用之前,必须根据指定的比较器(如通过 sort(T[], Comparator) 方法)将数组按升序排序。如果未排序,则结果不确定。如果数组包含多个等于指定对象的元素,则不保证会找到哪一个。
语法
public static <T> int binarySearch(T[] a, T key,
Comparator<? super T> c)
这里,T 是数组中对象的类.
参数
a | 指定要搜索的数组 |
key | 指定要搜索的值。 |
c | 指定数组排序所依据的比较器。 null 值表示应使用元素自然排序。 |
返回值
返回搜索键的索引(如果是)包含在数组中;否则,(-(插入点) - 1)。插入点定义为将键插入数组的点:大于键的第一个元素的索引,如果数组中的所有元素都小于指定键,则为 a.length。
Exception
如果数组包含使用指定比较器无法相互比较的元素,或者搜索键与数组的元素不可比较,则抛出 ClassCastException使用此比较器。
示例:
在下面的示例中,使用了 java.util.Arrays.binarySearch() 方法搜索并返回给定数组对象中搜索键的索引。
import java.util.*;
public class MyClass {
public static void main(String[] args) {
//创建字节数组
Byte Arr[] = {10, 5, 25, -10, -30};
//使用比较器为null来排序
//使用自然排序
Comparator<Byte> comp = null;
//对Byte数组进行排序,数组必须是
//使用二分查找之前排序
Arrays.sort(Arr, comp);
//打印排序后的数组
System.out.print("After sorting, Arr contains:");
for(Byte i: Arr)
System.out.print(" " + i);
//返回搜索到的key的索引号
Byte val = 25;
int idx = Arrays.binarySearch(Arr, val, comp);
System.out.print("\nThe index number of 25 is: " + idx);
}
}
上述代码的输出将是:
After sorting, Arr contains: -30 -10 5 10 25
The index number of 25 is: 4