首页 > 编程笔记 > Java笔记 阅读:10

Java binarySearch()方法:查询数组中的元素

在 Java 程序中,借助 Arrays 类的 binarySearch() 方法,可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值。

binarySearch()方法提供了多种重载形式,用于满足各种类型数组的查找需要。binarySearch()方法有两种参数类型。

1、binarySearch()的第一种用法

binarySearch() 的语法格式如下:
binarySearch(Object[] a, Object key)

如果 key 被包含在数组中,则返回搜索值的索引;否则返回 -1 或“-”(插入点)。

插入点是搜索键将要被插入数组中的那一点,即第一个大于此键的元素索引。

注意,调用 binarySearch(Object[] a, Object key) 之前必须对数组进行排序(通过 sort() 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。

【实例】查找元素在数组中的索引位置。
在项目中创建 Reference 类,在主方法中创建一维数组 ia,实现查找元素 4 在数组 ia 中的索引位置。实例代码如下:
import java.util.Arrays; // 导入 java.util.Arrays 类
public class Reference { // 创建类
    public static void main(String[] args) { // 主方法
        int ia[] = new int[]{1, 8, 9, 4, 5}; // 定义 int 型数组 ia
        Arrays.sort(ia); // 对数组进行排序
        int index = Arrays.binarySearch(ia, 4); // 查找数组 ia 中元素 4 的索引位置
        System.out.println("4 的索引位置是:" + index); // 对索引进行输出
    }
}
运行结果如下:

4 的索引位置是:1

返回值“1”是对数组 ia 进行排序后元素 4 的索引位置。

2、binarySearch()的第二种用法

binarySearch() 的语法格式如下:
binarySearch(Object[],a,int fromIndex,int toIndex,Object key)
此方法在指定的范围内检索某一元素。各个参数的含义分别是:
在使用该方法前,同样要对数组进行排序,这样才能获得准确的索引值。

如果要搜索的元素 key 在指定的范围内,则返回搜索键的索引;否则返回 -1 或“-”(插入点)。如果范围中的所有元素都小于指定的键,则插入点为 toIndex(注意,这保证了当且仅当此键被找到时,返回的值将大于或等于0)。

如果指定的范围大于或等于数组的长度,则会报出 ArrayIndexOutOfBoundsException 异常。

【实例】在指定范围内查找元素在数组中的索引位置。
在项目中创建 Rakel 类,在主方法中创建 String 数组,实现在指定范围内查找元素“cd”在数组 str 中的索引位置。实例代码如下:
import java.util.Arrays; // 导入 java.util.Arrays 类

public class Rakel { // 创建类
    public static void main(String[] args) { // 主方法
        String str[] = new String[]{"ab", "cd", "ef", "yz"}; // 定义 String 型数组 str
        Arrays.sort(str); // 对数组进行排序
        int index = Arrays.binarySearch(str, 0, 2, "cd"); // 在指定范围内搜索元素 “cd” 的索引位置
        System.out.println("cd 的索引位置是:" + index); // 对索引进行输出
    }
}
运行结果如下:

cd的索引位置是:1

相关文章