Java数组如何使用binarySearch()方法查找指定元素?

TK 2020-09-21 09:25:26 java常见问答 4345

下面要给大家讲到的就是java数组怎样去使用binarySearch()方法查找指定元素的相关内容,你知道具体的方法吗?一起来了解一下吧。

所谓的查找数组指的就是从数组当中查询指定位置的元素,或者是查询某个元素在指定的数组当中的位置,只用Arrays类的binarySearch()方法可以实现数组的查找,这个方法能够使用二分查找法来搜索指定数组,以获取到指定对象,这个方法返回要搜索元素的索引值。

binarySearch()方法有多种重载形式来满足不同类型数组的查找需要,常用的重载形式有两种。

第一种:

binarySearch(Object[] a,Object key);

在这当中,a表示要搜索的数组,key表示要搜索的值。

假如,key包含在数组当中,那么返回搜索值的索引;否则返回-1或者是“-插入点”,插入点指搜索键将要插入数组的位置,也就是第一个大于此键的元素索引。

注意一下,在进行数组查询之前,必须对数组进行排序(可以使用 sort() 方法)。

假如,没有对数组进行排序,那么结果就是不确定的,假如,数组包含了多个带有指定值的元素,那么就会无法确认找到的是哪一个。

示例:

声明double类型的score数组,接着调用Arrays类的sort()方法对score数组排序,排序之后,分别查找数组中值为100和60的元素,分别将结果保存到index1和index2变量当中,最后输出变量的值。

代码如下:

public static void main(String[] args)
{
    double[] score = {
        99.5
        , 100
        , 98
        , 97.5
        , 100
        , 95
        , 85.5
        , 100
    };
    Arrays.sort(score);
    int index1 = Arrays.binarySearch(score, 100);
    int index2 = Arrays.binarySearch(score, 60);
    System.out.println("查找到 100 的位置是:" + index1);
    System.out.println("查找到 60 的位置是:" + index2);
}

输出结果:

查找到 100 的位置是:5
查找到 60 的位置是:-1

2、binarySearch()还有另一种常用的形式,这种形式用于在指定的范围内查找某一元素。

语法如下:

binarySearch(Object[] a,int fromIndex,int toIndex,Object key);

在这当中,a表示要进行查找的数组,fromIndex指定范围的开始处索引(包含开始处),toIndex指定范围的结束处索引(不包含结束处),key表示要搜索的元素。

在使用binarySearch()方法的上述重载形式的时候,也需要对数组进行排序,以便获取准确的索引值。

假如,要查找的元素key在指定的范围内,那么就返回搜索键的索引;否则的话就返回-1或者是“-插入点”。

插入点指要将键插入数组的位置,也就是范围内第一个大于此键的元素索引。

示例:

对例1当中创建的score数组进行查找元素,指定开始位置为2,结束位置为6。

代码如下:

public static void main(String[] args)
{
    double[] score = {
        99.5
        , 100
        , 98
        , 97.5
        , 100
        , 95
        , 85.5
        , 100
    };
    Arrays.sort(score);
    int index1 = Arrays.binarySearch(score, 2, 6, 100);
    int index2 = Arrays.binarySearch(score, 2, 6, 60);
    System.out.println("查找到 100 的位置是:" + index1);
    System.out.println("查找到 60 的位置是:" + index2);
}

输出结果:

查找到 100 的位置是:5
查找到 60 的位置是:-3

最后要注意一下了,实现对数组进行查找的方法有很多,但是使用Arrays对象的binarySearch() 方法是最简单、最方便的一种,所以的话这种方法经常被应用。

以上的内容你都了解了吗?更多相关java常见问题及解决方法,请继续通过奇Q工具网来进行了解吧!

推荐阅读:

Java不规则数组详解

Java怎样比较两个数组是否相等equals()?

Java数组填充fill()介绍