【Java常识】9.0 util.Arrays包中数组实现数组转字符、排序和二分查找

【万字长文】学习Armv8架构虚拟化一篇就够了 这里我们将介绍一些基础的Hypervisor和虚拟化的理论知识。如果你已经有一定的基础或是已经熟悉了这些概念,可以跳过这部分内容。我们用Hypervisor这个词来定义一种负责创建,管理以及调度虚拟机(Virtual Machines, VMs)的软件。Stage 2 转换允许Hypervisor控制虚拟机的内存视图。具体来说,其可以控制虚拟机是否可以访问特定的某一块物理内存,以及该内存块出现在虚拟机内存空间的位置。这种能力对于虚拟机的隔离和沙箱功能来说至关重要。 阅读详情
1.0 当然,这些都只是抛砖迎玉的皮毛。

但是,所谓“见微知著”,通过查阅API文档,并结合本篇中的示范代码,做到合理使用达到目标应该一点问题没有。

2.0 代码实现

在我的上一篇文章中科院找到数组的一些运用。里面的实现都是自己去编写逻辑。使用现成的包则非常方便,直接调用即可。

package edp.com.learn1;

import java.util.Arrays;

public class Demo {

    public static void main(String[] args) {
        int[] arr = { 11, 22, 33, 44, 55, 66,77};
        System.out.println(Arrays.toString(arr));// 数组转字符串。
        Arrays.sort(arr);// 排序,底层用的快速排序
        System.out.println(Arrays.toString(arr));

        int[] arr2 = { 11, 22, 33, 44, 55, 66, 77 };  
        //二分查找,前提是数组有序且数值唯一,不然结果无法确定
        System.out.println(Arrays.binarySearch(arr2, 22));
        System.out.println(Arrays.binarySearch(arr2, 66));
        System.out.println(Arrays.binarySearch(arr2, 66));

        //binarySearch如果没找到,返回   -(插入点)-1  ,负的插入点减一  
        System.out.println(Arrays.binarySearch(arr2, 88));
        System.out.println(Arrays.binarySearch(arr2, 58));
        System.out.println(Arrays.binarySearch(arr2, 12));

    }
}

sort方法的底层实现是通过快速排序,比较复杂,但是比较高效,这里就不做解析了。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):CGMX9880 【教程/工具/方法/解疑】

2.0 Arrays包中toString方法的底层实现代码解析。

image

这是底层代码。解析如下:

image

3.0 Arrays包中binarySearch方法的底层实现代码解析。

image

image

解析如下:

private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {
        int low = fromIndex;                     //最小索引0。
        int high = toIndex - 1;                  //最大索引数组长度-1。

        while (low <= high) {                    //最小索引<=最大索引,可以循环判断。
            int mid = (low + high) >>> 1;   //求出中间索引值,(最小+最大)/2
            int midVal = a[mid];                 //通过中间索引获取中间值。

            if (midVal < key)                      //中间索引对应的值小于查找的值。
                low = mid + 1;                    //最小索引变化。
            else if (midVal > key)              //中间索引对应的值大于查找的值。
                high = mid - 1;                   //最大索引变化。
            else
                return mid; // key found      //找到了。
        }
        return -(low + 1); // key not found.   //没找到。返回  "-插入点-1"。
    }

END

【保姆级教程】教你如何轻松获取MIMIC数据使用权限 文章非常详细地介绍了MIMIC数据库申请使用的全部步骤。 阅读详情

相关推荐

factory机制-重载(一)

这里写自定义目录标题1.SystemVerilog对重载的支持2.对约束的重载3.factory 机制式的重载4.重载的方式和种类5.factory机制的调试 1.SystemVerilog对重载的支持 SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数或任务。 重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现的行为依然是子类的行为。 2.对约束的重载 在测试一个DUT时

sinat_41774721的博客 2960

Java编程题:查找和排序(用到Comparator)

查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 都按先录入排列在前的规则处理。 示例: jack 70 peter 96 Tom 70 smith 67 从高到低 成绩 peter 96 jack 70 Tom 70 smith 67 从低到高 smith 67 ja...

长不大的大灰狼 370

隐语第四课:快速上手-SecretFlow的安装和部署

隐语课程,继续学习隐私计算技术

weixin_41467180的博客 2509

Java基础篇之查找与排序

1. 二分查找(⭐) 要求 能够用自己语言描述二分查找算法 能够手写二分查找代码 能够解答一些变化后的考法 二分查找代码算法思路 前提:有已排序数组 A(假设已经做好) 定义左边界 L、右边界 R,确定搜索范围,循环执行二分查找(3、4两步) 获取中间索引 M = (L+R) /2 中间索引的值 A[M] 与待搜索的值 T 进行比较 ① A[M] == T 表示找到,返回中间索引 ② A[M] > T,中间值右侧的其它元素都大于 T,无需比较,中间索引左边去找,M - 1 设置为

桃花er的博客 1583

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

先进封装基础知识

想象一下,芯片就像是电脑或手机的大脑,但它非常脆弱,需要被保护起来。芯片封装就是给芯片穿上一件“保护衣”,这件“保护衣”不仅可以保护芯片,还能帮助芯片与外部世界进行沟通。

阿拉伯梳子的专栏 1144

java知识点 排序与查找

排序:让保存的元素按照一定的规则进行排序,存储; 冒泡排序:比较相邻的两个元素;重复对每一个元素进行相同操作,直到没有一对元素的时候;针对所有元素,再重复上面的步骤,直到没有任何一对需要比较; 选择排序:每次把最小的放到左边,拿出第一个,假设是最小的,挨个和后面的进行比较,有比第一个小的就交换下标,比较完一轮,放到最前面,重复步骤,直到当前元素后没其他元素即可; 查找元素: 顺序查找:一堆数据中,找到并返回其索引,未找到返回-1; 返回值为boolean:真就是true,假就是false; 返回

m0_60600640的博客 387

Sigrity IBIS建模实战:如何用T2B工具快速转换SPICE模型(附避坑指南)

本文详细介绍了如何使用Sigrity T2B工具将SPICE模型高效转换为IBIS模型,涵盖从环境配置、模型预处理到转换流程和验证策略的全过程。通过实战案例和避坑指南,帮助硬件工程师掌握高速电路设计中的IBIS建模技术,提升信号完整性分析效率。

weixin_29243279的博客 395

Java中Arrays类中的binarySearch方法详解

1.它有很多重载的方法: static int binarySearch(byte[] a, byte key) 使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。 static int binarySearch(byte[] a, int fromIndex, int toIndex, byte key) 使用二分搜索法来搜索指定的 byte 型数

wf13265的博客 4818

ubuntu 18.04 + Kimera slam 安装与demo测试

环境:opencv 3.4.12,其他的都是按照文档下载的。 首先进行组件的安装 一、Kimera-VIO 安装参考文档:https://github.com/MIT-SPARK/Kimera-VIO/blob/master/docs/kimera_vio_install.md 按照文档装就好,在安装过程中碰到如下问题: 0、make 过程很卡,不要用所有的核 1、cmake过程中卡下载 ORBvoc.zip ,手动下载这个文件,解压,将里面的3个文件,放到/Kimera-VIO/vocabu.

dna葡萄糖的博客 3629

【从零开始学习 UVM】1.2、UVM 概述 —— UVM Installation(UVM 安装)

【从零开始学习 UVM】1.2、UVM 概述 —— UVM Installation(UVM 安装)

努力,加油每一天鸭~ 1944

Java基础(六):数组全面解析

🔥 深度解析Java数组内存机制+高效操作秘籍,从底层原理到Arrays工具类实战,彻底掌握数组设计与性能优化!

从基础到源码解析的学习记录 3463

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

qq_40073899的博客 561

java数组排序——通过java.util.Arrays的方法。

最简单的数组排序,不用自己写逻辑,一个方法搞定,使用 java.util.Arrays 的方法。 1、通过Arrays.sort(数组)或者Arrays.parallelSort(数组) 给数组正序排序(后者jdk1.8新增方法,数据量大使用更稳定)。 2、通过Arrays.sort(数组,起始位置,结束位置)或者Arrays.parallelSort(数组,起始位置,结束位置)...

WZY_snail的博客 2149

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Java 常用类】java.util包(6)Arrays类的常用方法

【Java 常用类】java.util包(10)Arrays类的常用方法

长生的梦呓 760

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java中Arrays类详解

一、概述 1、包路径 java.util.Arrays 2、简介 此类提供了用来操作数组的各种方法。 二、使用方法 1、数组转List 方法: static <T> List<T> asList(T... a);//只有这一个方法 作用: 将一个数组转化为一个列表,并返回这个列表 使用: //1、int数组转Lis...

訾博(ZiBo)的博客 352

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java util arrays 工具类简介

Arrays:数组工具类,用来操作数组 ①主要方法: 1)sort(Array[] arr):数组进行自然排序 2)sort(Array[] arr, Comparator com):数组进行自定义排序 3)List asList(Array[] arr):把数组转化为list集合 ②:部分代码:import org.junit.Test; public cl

不积跬步无以至千里,不积小流无以成江海 1218

JAVA.UTIL.ARRAYS类常用方法

示列 1 : 数组复制 与使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制。 不同的是System.arraycopy,需要事先准备好目标数组,并分配长度。 copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了。 除此之外,需要注意的是 copyOfRange 的第3个参数,表示源数组的结束位置,是取不到的。 import java.util.Arrays; public class HelloWorld {

qq_43053196的博客 2698

【Java】 学习-数组基础题练习

【Java】 学习-数组基础题练习

qq_35491579的博客 888

【Java 专题补充】Arrays类详解

Arrays 类是 Java 语言中用于操作数组的一个工具类,提供了多种静态方法来处理数组,包括排序、搜索、填充、比较等操作。这个类位于 java.util 包中。Arrays类的构造方法被设置为私有(private),因此无法创建 Arrays 对象。Arrays 类的所有公有方法都是静态的,可以直接通过类名调用。返回一维数组的字符串表示。(1)示例(代码及运行结果)(2)源码if (a == null) // 判断 a 是否为空引用,如果为空引用,则返回 "null" 字符串。

Akiiiira的博客 1278

(JAVA)数组

相同类型元素的一个集合。在内存中是一段连续存放的空间。

2302_80962717的博客 1570

Arrays类 数组的扩展

形式:Arrays.binarySearch(数组名,开始下标,结束下标,要搜索的值)形式: Arrays.fill(数组名,开始下标,结束下标,替换的值)替换内容从开始下标开始替换,直到结束下标结束且不包含结束下标的元素。意义为:给nums的3号下标开始排序,到7下标结束,不包含7下标。使用形式: 数组名[下标][下标];形式:类型[][] 数组名={{元素1…形式: Arrays.toString(数组名)意义为:定义一个行长度为3,列长度为3的整形数组。意义为:用替换的值将数组的内容替换,

LZY21916599629的博客 879
上一篇: 阿里P8携手腾讯T4谈微服务架构实战:深入浅出Cloud+boot+Docker
下一篇: 阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了
蒙塔ta
博客等级 码龄5年 4粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值