Java-Arrays工具类的常见方法总结

在Java中,提供了一个专门用于操作数组的工具类,即Arrays类,该类提供了一些方法对数组进行排序,打印,复制等操作。下面是一些该工具类方法总结。

1.Arrays.aslist()

作用:当我们想直接将数组中的全部内容(或一组相同类型的参数)以List(集合)类型返回时,就可以用到Arrays的aslist()方法,例

	public static void main(String[] args) {
		int[] arr= {0,1,2,3,4,5};
		//传入数组
		List<int[]> List=Arrays.asList(arr);
		//传入一组动态参数
		List<Integer> List1=Arrays.asList(0,1,2,3,4,5);
		System.out.println(List1);
	}

该方法解析:先看一段源码

  显然,源代码中Arrays.aslist的参数是一组动态参数,所以可以传入数组或一组内容(必须为引用类型),传入的参数返回为List<T>集合,即可实现将数组或一组数据转化为List(集合)。

2.Arrays.binarySearch()

通过上面可以看出该方法在Arrays类中大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,目标元素)

返回值:返回int类型数据,即目标元素在数组中的下标

方法的主要作用:在数组中查找目标元素,例:

		int[] arr= {0,1,2,3,4,5};
		int index=Arrays.binarySearch(arr,4);
		System.out.println(index);

观察其源码, 其内部返回了一个binarySearch0方法,该方法被私有化,传入参数(数组,数组起始下标,数组结束下标,目标元素),方法体为一段二分查找的典型代码,在二分查找找到目标元素后返回int类型,即目标元素下标。二分查找必须是有序数组,所以该方法传入的数组也必须为有序数组

3. Arrays.copyOf()

可以看出该方法内部也是发生了大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,复制数组长度)

例:

	    int[] arr= {0,1,2,3,4,5};
		int[] arrnew=Arrays.copyOf(arr, 3);
		//打印复制的新数组内容
		System.out.println(Arrays.toString(arrnew));//运行结果[0, 1, 2]

该方法作用:将传入的数组从首元素开始复制,复制的个数为传入的数组长度(即传入的第二个参数),返回一个复制过的新的数组

观察源码,可以看出该方法例提供了一个新的数组,通过System的arraycopy方法将原数组中元素按照传入下标复制到新的数组,返回该数组

 4.Arrays.copyOfRange()

可以看出该方法内部也是发生了大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,开始复制下标,结束复制下标) 

先看实例:

	    int[] arr= {0,1,2,3,4,5};
		int[] arrnew=Arrays.copyOfRange(arr,1,3);
		//打印复制的新数组内容
		System.out.println(Arrays.toString(arrnew));//运行结果[ 1, 2]

方法作用:将传入的数组从传入的参数开始复制下标位置(包含该位置元素)开始复制,复制到结束复制下标位置(不包含该位置元素),返回一个复制的新数组

观察其源码:可以看出该方法中先判断了新的数组长度如果<0,则抛出异常,若>0,则定义一个新的数组, 再通过System的arraycopy方法将原数组中元素按照传入下标复制到新的数组,返回该数组

5.Arrays.fill()

可以看出该方法内部也是发生了大量重载,即可以传入不同类型(类型不同,数量不同,顺序不同)的参数,根据传入参数的不同,使用的场景不同。

参数:(数组名称,要填充的内容)

实例:

	    int[] arr= {0,1,2,3,4,5};
		Arrays.fill(arr, 1);
		//打印填充后的新数组内容
		System.out.println(Arrays.toString(arr));//运行结果[1, 1, 1, 1, 1, 1]

该方法作用:用传入的参数填充数组

观察源码:可知传入参数后,利用for循环遍历将原数组中所有元素替换为新的元素

区间填充: 参数(数组名称,填充的初始下标,填充的结束下标,要填充的内容)

通过源码可知,该方法通过传入的两个下标为起始位置和结束位置进行填充

例:

	    int[] arr= {0,1,2,3,4,5};
		Arrays.fill(arr, 1, 3, 1);
		//打印填充后的新数组内容
		System.out.println(Arrays.toString(arr));//运行结果[0, 1, 1, 3, 4, 5]

 6.Arrays.sort()

参数:(数组名称)

该方法也是重载的方法,方法作用:对数组从小到大进行排序

	    int[] arr= {0,1,2,3,4,5};
		Arrays.sort(arr);
		//排序后的新数组内容
		System.out.println(Arrays.toString(arr));//运行结果[0, 1, 2, 3, 4, 5]

观察其源码:可以看出其内部返回了DualPivotQuicksort类的sort方法,而这个方法中实现了快速排序算法(暂时不展现该排序算法的完整代码),返回排序后的新的数组 

 

 因为sort是继承自最终父类Object类中的方法,所以自定义引用类型数组需重写sort方法。

7.Arrays.toString()

方法作用:打印数组中所以元素

参数:(数组名称)

观察源码,可有看出该方法先检查了该数组是否为空,若为空,返回null,不为空检查数组长度,若数组长度-1结果为-1,则说明该数组是空数组,返回"[]",都不满足,创建一个StringBuilder对象,首尾分为添加"[","]",中间添加所以数组元素,返回对象b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404351.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】数据链路层--以太网/MTU/ARP/RARP协议

文章目录 一、以太网1.以太网帧格式2.MAC地址3.局域网的转发原理 二、MTU1.什么是MTU2.MTU对IP协议的影响3.MTU对UDP影响4.MTU对于TCP协议的影响 三、ARP协议1.ARP协议的作用2.ARP数据报的格式3.ARP协议的工作流程 一、以太网 “以太网” 不是一种具体的网络, 而是一种技术标准…

命令执行 [WUSTCTF2020]朴实无华1

做题&#xff1a; 打开题目 我们用dirsearch扫描一下看看 扫描到有robots.txt&#xff0c;访问一下看看 提示我们 /fAke_f1agggg.php 那就访问一下&#xff0c;不是真的flag bp抓包一下 得到提示&#xff0c; /fl4g.php&#xff0c;访问一下看看 按alt&#xff0c;点击修复文…

使用 C++23 协程实现第一个 co_await 同步风格调用接口--Qt计算文件哈希值

C加入了协程 coroutine的特性&#xff0c;一直没有动手实现过。看了网上很多文章&#xff0c;已经了解了协程作为“可被中断和恢复的函数”的一系列特点。在学习过程中&#xff0c;我发现大多数网上的例子&#xff0c;要不就是在main()函数的控制台程序里演示yeild,await, resu…

Nginx网络服务二-----(虚拟机和location)

一、HTTP设置 1.设置虚拟主机 1.1Nginx 基于域名---虚拟主机 include /apps/nginx/conf.d/*.conf; 1.2Nginx 基于端口---虚拟主机 在做了域名的基础上&#xff0c;按照以下步骤继续 1.3Nginx 基于IP---虚拟主机 2.server下的root root路径格式 指定文件的路径 url …

1.1_1 计算机网络的概念、功能、组成和分类

文章目录 1.1_1 计算机网络的概念、功能、组成和分类&#xff08;一&#xff09;计算机网络的概念&#xff08;二&#xff09;计算机网络的功能&#xff08;三&#xff09;计算机网络的组成1.组成部分2.工作方式3.功能组成 &#xff08;四&#xff09;计算机网络的分类 总结 1.…

线性代数:向量空间

目录 向量空间 Ax 0 的解空间S Ax b 的全体解向量所构成集合不是向量空间 基、维数、子空间 自然基与坐标 例1 例2 向量空间 Ax 0 的解空间S Ax b 的全体解向量所构成集合不是向量空间 基、维数、子空间 自然基与坐标 例1 例2

使用redisMQ-spring-boot-starter实现消息队列和延时队列

简介 redisMQ-spring-boot-starter是一个轻量级的、基于Redis实现的消息队列中间件&#xff0c;它有如下优点&#xff1a; 开箱即用&#xff0c;你几乎不用添加额外的配置支持消息队列、延时队列&#xff0c;并提供精细化配置参数提供消息确认机制支持虚拟空间&#xff0c;不…

非洲数字经济持续崛起 本地化策略让传音提前入局

非洲市场&#xff0c;被誉为全球最后的“边疆级”市场&#xff0c;吸引着全球目光。近日&#xff0c;非洲开发银行最新报告指出&#xff0c;未来两年非洲的经济增长将优于世界其他地区&#xff0c;2023 年和 2024 年实际国内生产总值 (GDP) 平均约为 4%。广阔的非洲大陆焕发着勃…

PLC设置网口通讯的原因

PLC设置网口通讯功能&#xff0c;是现场总线向工业以太网的迈进&#xff0c;更是为了在网口之上构建更为庞大、开放的大一统的生态系统。 有了以太网&#xff0c;特别是TCP/IP协议后&#xff0c;全员工控人的日常工作更为便利了。 主要体现在以下4点&#xff1a; 1.再也不需要…

TiDB 社区智慧合集丨TiDB 相关 SQL 脚本大全

非常感谢各位 TiDBer 在之前 【TiDBer 唠嗑茶话会 48】非正式 TiDB 相关 SQL 脚本征集大赛&#xff01;( https://asktug.com/t/topic/996635 )里提供的各种常用脚本。 在这篇文章中&#xff0c;我们整理了社区同学提供的一系列 TiDB 相关 SQL 脚本&#xff0c;希望能为大家在…

基于springboot+vue的车辆管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【云动世纪:Apache Doris 技术之光】

本文节选自《基础软件之路&#xff1a;企业级实践及开源之路》一书&#xff0c;该书集结了中国几乎所有主流基础软件企业的实践案例&#xff0c;由 28 位知名专家共同编写&#xff0c;系统剖析了基础软件发展趋势、四大基础软件&#xff08;数据库、操作系统、编程语言与中间件…

短视频新媒体的福音:视频抽插帧AI效率是人工的100倍以上

进入全民短视频时代&#xff0c;人像视频的拍摄也正在迈向专业化。随着固化审美的瓦解&#xff0c;十级磨皮的网红滤镜被打破&#xff0c;多元化的高级质感成为新的风向标&#xff0c;“美”到每一帧是人们对动态视频提出的更高要求。 目前&#xff0c;大部分手机均可记录主流的…

【Vuforia+Unity】AR05-实物3D模型识别功能实现(ModelTarget )

不管是什么类型的识别Vuforia的步骤基本都是&#xff1a; 把被识别的物体转成图、立体图、柱形图&#xff0c;3D模型、环境模型&#xff0c;然后模型生成Vuforia数据库-导入Unity-参考模型位置开始摆放数字内容&#xff0c;然后参考模型自动隐藏-发布APP-识别生活中实物-数字内…

体验LobeChat搭建私人聊天应用

LobeChat是什么 LobeChat 是开源的高性能聊天机器人框架&#xff0c;支持语音合成、多模态、可扩展的&#xff08;Function Call&#xff09;插件系统。支持一键免费部署私人 ChatGPT/LLM 网页应用程序。 地址&#xff1a;https://github.com/lobehub/lobe-chat 为什么要用Lobe…

【Python笔记-设计模式】工厂模式

一、说明 (一) 解决问题 提供了一种方式&#xff0c;在不指定具体类将要创建的情况下&#xff0c;将类的实例化操作延迟到子类中完成。可以实现客户端代码与具体类实现之间的解耦&#xff0c;使得系统更加灵活、可扩展和可维护。 (二) 使用场景 希望复用现有对象来节省系统…

C# cass10 宗地初始化-根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层

运行环境Visual Studio 2022 c# cad2016 cass10 根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层 一、主要步骤 zdimport 方法&#xff1a;这个方法用于导入宗地信息。首先通过调用 AutoCAD API 获取当前活动文档、数据库和编辑器对象。然后根据 CreatePalette.Se…

Web3 基金会推出去中心化之声计划:投入高额 DOT 和 KSM ,助力去中心化治理

作者&#xff1a;Web3 Foundation Team 编译&#xff1a;OneBlock 原文&#xff1a;https://medium.com/web3foundation/decentralized-voices-program-93623c27ae43 Web3 基金会为 Polkadot 和 Kusama 创建了去中心化之声计划&#xff08;Decentralized Voices Program&…

【深度学习笔记】3_1 线性回归

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.1 线性回归 线性回归输出是一个连续值&#xff0c;因此适用于回归问题。回归问题在实际中很常见&#xff0c;如预测房屋价格、气温、销售额等连续值的问题。与回归问…

3.测试教程 - 基础篇

文章目录 软件测试的生命周期软件测试&软件开发生命周期如何描述一个bug如何定义bug的级别bug的生命周期如何开始第一次测试测试的执行和BUG管理产生争执怎么办&#xff08;处理人际关系&#xff09; 大家好&#xff0c;我是晓星航。今天为大家带来的是 测试基础 相关的讲解…