Arrays.binarySearch()
是 Java 中的一个方法,用于在已排序的数组中查找指定元素的位置。如果找到该元素,则返回元素的索引;如果没有找到,则返回一个负数,表示该元素应该插入的位置。
方法签名
public static int binarySearch(Object[] a, Object key)
-
a
:要搜索的数组。 -
key
:要搜索的值。
返回值
-
如果找到元素,则返回元素的索引。
-
如果未找到元素,则返回一个负数,该负数是应该插入元素的位置。具体来说,返回值是
-(insertion point + 1)
,其中insertion point
是第一个大于key
的元素的索引。
使用示例
以下是一个简单的使用示例:
import java.util.Arrays;
public class BinarySearchExample {
public static void main(String[] args) {
int[] arr = {2, 4, 6, 8, 10, 12, 14};
int key = 10;
int index = Arrays.binarySearch(arr, key);
if (index >= 0) {
System.out.println("元素 " + key + " 位于数组的索引 " + index);
} else {
System.out.println("元素 " + key + " 不在数组中");
}
}
}
注意事项
-
在使用
binarySearch()
方法之前,必须确保数组已经按照升序或降序进行了排序。如果数组未排序,结果是不确定的。 -
该方法可以处理对象数组,但要求数组中的对象必须实现
Comparable
接口,或者需要提供一个Comparator
来定义元素的比较规则。
技巧
-
如果搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;
-
如果搜索值是数组元素,从0开始计数,得搜索值的索引值;
-
如果搜索值不是数组元素,且小于数组内元素,索引值为 – 1;
-
如果搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1)。