下面要给大家讲到的就是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工具网来进行了解吧!
推荐阅读: