在一些时候,需要用给一个数字找到适合的区间,Arrays.binarySearch可达到这个目的.


static int binarySearch(int[] a, int key) 
          Searches the specified array of ints for the specified value using the binary search algorithm.

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        // initializing unsorted byte array
        byte byteArr[] = {10,20,15,22,35};
        // sorting array
        Arrays.sort(byteArr);
        // let us print all the elements available in list
        System.out.println("The sorted byte array is:");
        for (byte number : byteArr) {
          System.out.println("Number = " + number);
        }
        // 输入需要搜索的数字
        byte searchVa1 = 15;  //搜索在数组的数字
        byte searchVa2 = 22;  //搜索不在数组的数组
        
        int retVa1 = Arrays.binarySearch(byteArr,searchVa1);
        int retVa2 = Arrays.binarySearch(byteArr, searchVa2);
        
        int position1=retVa1>=0?retVa1:-retVa1-2;
        int position2=retVa2>=0?retVa2:-retVa2-2;
        
        System.out.println("The index of 10 element is : " + position1);  //输出结果为 1
        System.out.println("The index of 22 element is : " + position2);  //输出结果为 3
        
      }
}
15在数组排序后是第2个,索引为1
22在数组排序后在第3个和第4个中间  位置排在第4个,索引为3
需要注意的是,用Arrays.binarySearch搜索时,必须对元素进行排序.

java 用Arrays.binarySearch解读 快速定位数字范围的更多相关文章

  1. Java中数组Arrays.binarySearch,快速查找数组内元素位置

    在数组中查找一个元素,Arrays提供了一个方便查询的方法.Arrays.binarySearch(): 测试列子: public class MainTestArray { public stati ...

  2. JAVA Arrays.binarySearch

    转自:http://blog.csdn.net/somebodydie/article/details/8229343 package com.jaky; import java.util.*; pu ...

  3. java中Arrays类中,binarySearch()方法的返回值问题

    最近在复习Java知识,发现果然不经常使用忘得非常快... 看到binarySearch()方法的使用时,发现书上有点错误,于是就自己上机实验了一下,最后总结一下该方法的返回值. 总结:binaryS ...

  4. Java基础(39)Arrays.binarySearch方法

    1.源码中可以看到,binarySearch方法调用了binarySearch0方法,binarySearch0方法才是标准的二分查找实现. 2.对于binarySearch0方法来说,注意最后的re ...

  5. JAVA基础系列:Arrays.binarySearch二分查找

    首先,binarySearch方法为二分法查找,所以数组必须是有序的或者是用sort()方法排序之后的 1)  binarySearch(Object[] a, Object key) a: 要搜索的 ...

  6. Java中Arrays数组工具类的使用全解

    本文几乎涵盖了所有的Arrays工具类(基于Java 11)的方法以及使用用例,一站式带你了解Arrays类的用法,希望对大家有帮助. 码字不易,三连支持一下吧 Arrays数组工具类 方法一览表 快 ...

  7. Java集合---Arrays类源码解析

    一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型: ...

  8. 在Java中Arrays工具类实现功能的六种方法

    使用Arrays工具类,要先导入包即:import.java.util.Arrays 以下是实现六种功能的方法: 1.比较两个数组值是否相等: 结果为true.false.(布尔型不能比较) int ...

  9. java:数组操作工具类 java.util.Arrays包 主要方法详解

    Arrays类位于Java.util包下,是一个对数组操作的工具类,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Arrays类中的方法可以分为八类: sort(对数组排序) ...

随机推荐

  1. PRmakefile文件

    Ubuntu下的makefile: # /******************************************************************************* ...

  2. cudaMemcpy2D

  3. matlab 读取文件(mat)存储为json文件

    fid= fopen('reqJosn.json', 'w+'); load('request-set-10.mat'); requests = requests.request; requestNu ...

  4. 3、SpringBoot------邮件发送(1)

    开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/8878e8e89ce01ceb967ef8c1193ac740a6 ...

  5. Windows/Linux下查看系统CPU使用最高的线程

    参考:https://blog.csdn.net/qq_27818157/article/details/78688580 jstack -l 31372 > c:/31372.stack

  6. python3 井字棋 GUI - 人机对战、机器对战 (threading、tkinter库)

    python3 井字棋 GUI - 人机对战.机器对战 功能 GUI界面 人机对战(可选择机器先走) 机器对战(50局) 流程图 内核 棋盘 [0][1][2] [3][4][5] [6][7][8] ...

  7. 【整理】PHP获取客户端真实IP地址详解

    php获取客户端IP地址有四种方法,这五种方法分别为REMOTE_ADDR.HTTP_CLIENT_IP.HTTP_X_FORWARDED_FOR.HTTP_VIA. REMOTE_ADDR 是你的客 ...

  8. lnamp高性能架构之apache和nginx的整合

    搭建过lamp博友和lnmp的博友们可能对这这两个单词并不陌生,对与apachen,nginx相比都源码或yum安装过,但知道apache的nginx的优点,apache处理动态页面很强,nginx处 ...

  9. 40.VUE学习之--组件之间的数据传参父组件向子组件里传参,props的使用实例操作

    父组件向子组件里传参,props的使用实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  10. windows禁用/启用hyper-V,解决hyper-V与模拟器同时启用时造成冲突