Java数组使用binarySearch()方法查找指定元素的实现

查找数组是指从数组中查询指定位置的元素,或者查询某元素在指定数组中的位置。使用 Arrays 类的 binarySearch() 方法可以实现数组的查找,该方法可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值。

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

(1) 第一种形式如下:

binarySearch(Object[] a,Object key);

其中,a 表示要搜索的数组,key 表示要搜索的值。如果 key 包含在数组中,则返回搜索值的索引;否则返回 -1 或“-插入点”。插入点指搜索键将要插入数组的位置,即第一个大于此键的元素索引。

在进行数组查询之前,必须对数组进行排序(可以使用 sort() 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法确认找到的是哪一个。
例 1
声明 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 或 “-插入点”。插入点指要将键插入数组的位置,即范围内第一个大于此键的元素索引。

例 2

对例 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数组使用binarySearch()方法查找指定元素的实现的文章就介绍到这了,更多相关Java binarySearch查找指定元素内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • binarySearch在java的查找实例用法

    在java数组中,查找数组元素是比较基础的操作了,arrays类的binarySearch就是专门实现指定元素的.同时它也属于我们常说的二分法.所以作用的范围是排序过的数组.下面我们就binarySearch的概念.使用注意进行说明,同时分出它的两种返回值情况,最后进行查找的实例分享. 1.概念 通过二分法在已经排好序的数组中查找指定的元素,并返回该元素的下标. 2.使用注意 此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的.如果数组中含有多个指定值

  • Java binarysearch方法原理详解

    这篇文章主要介绍了Java binarysearch方法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先 数组排序需要import java.util.Arrays类 binarysearch有两个用法,一个是在整个数组里搜索,一个是在指定范围搜索,其实都是差不多的,可以将前者视为后者的特殊情况. 用法1 binarySearch(Object[], Object key) Object是目标数组,key是目标值,要求目标数组必须要

  • java数据结构之二分查找法 binarySearch的实例

    java数据结构之二分查找法 binarySearch的实例 折半查找法,前提是已经排好序的数组才可查找 实例代码: public class BinarySearch { int[] bArr; public void setArr(int[] bArr){ this.bArr=bArr; } public static void main(String[] args) { int arrLength=16; int[] bArr=new int[arrLength]; System.out.

  • Java 利用binarySearch实现抽奖计算逻辑

    前言 我们平时抽奖总感觉想抽到最高的奖那么难,正巧写了个抽奖的功能,趁着有时间把抽奖的功能实现整理一下,我们要抽奖首先要定义一个奖品的实体类,这个实体类中包含奖品的基本信息,比如奖品名称,奖品数量,抽奖权值,是否是奖品(因为要考虑到谢谢惠顾之类的未中奖情况)等等,根据需求的扩增也可以对每个人抽中奖的次数进行限制(增加抽奖次数属性),在此不做过于复杂的设计,主要说实现的逻辑.定义实体类后我们就去装填奖品信息了(去数据库增加中奖信息...),我们也可以不使用数据库只做一些模拟数据,以上都准备好后就可

  • Java数组使用binarySearch()方法查找指定元素的实现

    查找数组是指从数组中查询指定位置的元素,或者查询某元素在指定数组中的位置.使用 Arrays 类的 binarySearch() 方法可以实现数组的查找,该方法可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值. binarySearch() 方法有多种重载形式来满足不同类型数组的查找需要,常用的重载形式有两种. (1) 第一种形式如下: binarySearch(Object[] a,Object key); 其中,a 表示要搜索的数组,key 表示要搜索的值.如果

  • Java 数组复制clone方法实现详解

    这篇文章主要介绍了Java 数组复制clone方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.源码 public class Test1 { public static void main(String[] args) { // Student[] arrs = new Student[] { new Student() { id = "22" } }; C# 可以简写法,Java不支持 Student[] arrs

  • jQuery使用CSS()方法给指定元素同时设置多个样式

    本文实例讲述了jQuery使用CSS()方法给指定元素同时设置多个样式的方法.分享给大家供大家参考.具体如下: <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button").click(function(){ $(

  • jQuery使用hide方法隐藏指定元素class样式用法实例

    本文实例讲述了jQuery使用hide方法隐藏指定元素class样式用法.分享给大家供大家参考.具体如下: 下面的JS代码可以隐藏所有class属性等于test的元素 <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button

  • Java数组扩容实现方法解析

    这篇文章主要介绍了Java数组扩容实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一种 int[] arr2=new int[arr1.length*2] //新数组的长度 第二种 int[] arr2=java.util.Arrays.copyOf(原数组名,新数组的长度); 第三种 int[] arr2=new int[arr1.length*2] System.arraycopy(原数组名,起始下标,新数组名,起始下标,复制

  • jquery(hide方法)隐藏指定元素实例

    复制代码 代码如下: <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></p><p><script language="javascript" type="text/javascript" src="jquery-1.7.2.js"></sc

  • JQuery查找子元素find()和遍历集合each的方法总结

    1.HTML代码 <div name="students" school="HK"> <input type="boy" name="ZhangSan" value="206"> <input type="girl" name="Lisi" value="108"> </div>  2.jquery

  • 详解java数组进行翻转的方法有哪些

    在数组的元素中,有时候我们需要把它们的顺序进行颠倒,从而变成一个新的数组.主流的数组翻转方法有很多,本篇整理了一些实用的方法:arrayList.倒序循环.临时数组.相信除了第一种方法,其他两种大家可能没有接触过.下面就这三种Java数组翻转的方法,我们分别大家带来实例讲解. 1.使用Collections.reverse(arrayList) import java.util.ArrayList; import java.util.Collections; public class Array

  • JavaScript使用push方法添加一个元素到数组末尾用法实例

    本文实例讲述了JavaScript使用push方法添加一个元素到数组末尾的用法.分享给大家供大家参考.具体如下: 下面的代码演示了JS数组通过push方法添加一个元素到数组末尾 <!DOCTYPE html> <html> <body> <p id="demo"> Click the button to add a new element to the array. </p> <button onclick="

  • 实例解析如何正确使用Java数组

    一.关于数组的特点 1.在Java中,无论使用数组或集合,都有边界检查.如果越界操作就会得到一个RuntimeException异常. 2.数组只能保存特定类型.数组可以保存原生数据类型,集合则不能.集合不以具体的类型来处理对象,它们将所有对象都按Object类型处理,集合中存放的是对象的引用而不是对象本身. 3.集合类只能保存对象的引用.而数组既可以创建为直接保存原生数据类型,也可以保存对象的引用.在集合中可以使用包装类(Wrapper Class),如Integer.Double等来实现保存

随机推荐