Arrays工具类的常见方法总结

一、Arrays.asList( )

1.作用:Arrays.asList( )方法的作用是将数组转换成List,将List中的全部集合对象添加至ArrayList集合中

2.参数:动态参数  (T... a)

3.返回值:List 集合  List<T>

4.举例:

package com.ztt.Demo02;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class demo03 {public static void main(String[] args) {//创建临时的List集合List<String> girlList=Arrays.asList("张甜甜","张亚丽","任敏","史碧蓉");//全部添加至ArrayList集合中ArrayList<String> list=new ArrayList<String>();list.addAll(girlList);System.out.println(list);}}

输出结果:

[张甜甜, 张亚丽, 任敏, 史碧蓉]

5.源代码解读:

   

Arrays.asList( ) 是通过创建了一个 ArrayList 对象,然后将动态参数(T... a)传入,返回值是List 集合 List<T>

二、Arrays.binarySearch( )

1.作用:Arrays.binarySearch( )方法的作用是在一组有序数组查找目标元素

2.参数:(int[ ] a, int key)

参数1:目标数组

参数2:需要查找的元素

3.返回值:查找到的目标元素的下标(没有查找到返回-1

4.举例:

import java.util.Arrays;public class demo03 {public static void main(String[] args) {int[] array= {28,12,89,73,65,18,96,50,8,36};int target=36; //目标元素//先排序Arrays.sort(array);System.out.println(Arrays.toString(array));//再查找int index=Arrays.binarySearch(array, target);System.out.println(index);}
}import java.util.Arrays;public class demo05 {public static void main(String[] args) {// 查找元素:使用Arrays工具类的binarySearch()方法//		int[] numbers= {11,12,13,14,17,19,13,27};//有序数组int[] numbers= {3,6,2,5,9,7,6,2};//无序数组int target=7;//快速排序Arrays.sort(numbers);System.out.println(Arrays.toString(numbers));//基于二分查找,要求数组必须有序int index=Arrays.binarySearch(numbers, target);System.out.println(index);}}

输出结果:

[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]
4[2, 2, 3, 5, 6, 6, 7, 9]
6

5.源代码解读:

binarySearch( )方法通过传入参数目标数组和需要查找的元素,返回binarySearch0()方法的四个参数:a:要搜索的数组  0:要搜索的起始下标  a.length:要搜索的结束下标最后一个元素的下标为a.length-1  key:要搜索的值

binarySearch( )方法是调用了 binarySearch0( )方法,low为低位0high为高位数组a.length-1,然后通过计算得到中间位置mid,获取中间值midVal,然后再用中间值midVal和目标值key相较。
        若中间值midVal大于目标值key时,说明目标元素可能在目标数组的上半区,将high=mid-1,然后继续计算中间值,依次循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数 -(low + 1)
        若中间值midVal小于目标值key时,说明目标元素可能在目标数组的下半区,将low=mid+1,然后继续计算中间值,依次循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数 -(low + 1)

三、Arrays.copyOf( )

1.作用:Arrays.copyOf( )方法的作用是复制数组

2.参数:

参数1:原数组

参数2:复制的元素个数

3.返回值:int类型的数组

4.举例:

package com.ztt.Demo02;import java.util.Arrays;public class demo04 {public static void main(String[] args) {// 数组复制//方式2:通过Arrays工具类的copyOf()\copyOfRange()int[] numbers= {1,2,3,4,5,6,7};System.out.println("原数组内容:"+Arrays.toString(numbers));System.out.println(numbers);//复制前三个元素:从下标0开始复制,复制前三个元素int[] arr01=Arrays.copyOf(numbers, 3);System.out.println("前三个元素:"+Arrays.toString(arr01));System.out.println(arr01);//复制所有元素:从下标0开始复制,复制所有元素int[] arr02=Arrays.copyOf(numbers, numbers.length);System.out.println("所有的元素:"+Arrays.toString(arr02));System.out.println(arr02);}}

输出结果:

原数组内容:[1, 2, 3, 4, 5, 6, 7]
[I@515f550a
前三个元素:[1, 2, 3]
[I@626b2d4a
所有的元素:[1, 2, 3, 4, 5, 6, 7]
[I@5e91993f

5.源代码解读:

Arrays.copyOf( )方法通过传入参数原始数组和想要创建的新数组的长度,返回一个int类型的数组,创建一个新的数组int[ ] copy:长度为newLength,用于存放复制过来的元素,然后通过System.arraycopy( )方法,将原数组中的元素复制到copy数组中。

System.copyOf( ) 

1.作用:System.copyOf( )方法的作用是数组的复制,效率高

2.参数:

参数1:原数组

参数2:开始复制的位置

参数3:目标数组

参数4:开始存储的位置

参数5:复制的长度(复制的元素个数)

3.返回值:没有返回值 void

4.举例:

import java.util.Arrays;public class demo01 {public static void main(String[] args) {// 数组的常用操作://1.填充//2.复制数组//方式1:System类的arraycopy()方法 效率高int[] numbers= {1,2,3,4,5,6,7};int[] target=new int[numbers.length];//参数1:原数组//参数2:开始复制的位置//参数3:目标数组//参数4:开始存储的位置//参数5:复制的长度(复制的元素个数)System.arraycopy(numbers, 0, target, 0, numbers.length);//输出数组内容System.out.println(Arrays.toString(numbers));System.out.println(Arrays.toString(target));//输出数组类型和内存地址System.out.println(numbers);System.out.println(target);}}

输出结果:

[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7]
[I@1eb44e46
[I@6504e3b2

5.源代码解读:

System.copyOf( )通过传入参数 原数组 开始复制的位置 目标数组 开始存储的位置 复制的元素个数 没有返回值。

四、Arrays.copyOfRange( )

1.作用:Arrays.copyOfRange( )方法的作用是复制指定区间的元素

2.参数:

参数1:原数组

参数2:开始复制的位置

参数3:结束位置

3.返回值:int类型的数组

4.举例:

package com.ztt.Demo02;import java.util.Arrays;public class demo05 {public static void main(String[] args) {//复制指定区间元素:从下表1开始复制,复制下标4之前的元素int[] numbers= {1,2,3,4,5,6,7};int[] arr03=Arrays.copyOfRange(numbers, 1,4);System.out.println("指定区间元素:"+Arrays.toString(arr03));System.out.println(arr03);//复制后五个元素:指定下标开始,复制到数组末尾int[] arr04=Arrays.copyOfRange(numbers, 2,numbers.length+5);System.out.println("后五个元素:"+Arrays.toString(arr04));System.out.println(arr04);}}

输出结果:

指定区间元素:[2, 3, 4]
[I@515f550a
后五个元素:[3, 4, 5, 6, 7, 0, 0, 0, 0, 0]
[I@626b2d4a

 5.源代码解读:

 Arrays.copyOfRange( )  通过传入参数原数组   开始复制的位置   结束位置,返回一个int 类型的数组,计算新数组的长度 ,如果新数组的长度小于 0 时 ,则抛出非法参数异常(IllegalArgumentException),因为from参数大于to参数,这是一个不合法的范围;当新数组的长度大于 0 时,创建一个新的数组int[ ]  copy:长度为newLength,用于存放复制过来的元素,然后通过System.arraycopy( )方法,将原数组中的元素复制到copy数组中。

五、Arrays.fill( ) 

1.作用:Arrays.fill( )的作用是数组的填充,将一个数组填充为目标数组 

2.参数:

参数1:一个数组

参数2:填充的数字

3.返回值:没有返回值 void

4.举例:

package com.ztt.Demo02;import java.util.Arrays;public class demo06 {public static void main(String[] args) {//数组填充int[] number1= {9,8,7};System.out.println("填充前:"+Arrays.toString(number1));Arrays.fill(number1, -1);System.out.println("填充后:"+Arrays.toString(number1));int[] number2=new int[3];System.out.println("填充前:"+Arrays.toString(number2));Arrays.fill(number2, -1);System.out.println("填充后:"+Arrays.toString(number2));}}

输出结果:

填充前:[9, 8, 7]
填充后:[-1, -1, -1]
填充前:[0, 0, 0]
填充后:[-1, -1, -1]

 5.源代码解读:

 Arrays.fill( )通过传入参数 (一个数组  填充的数字),没有返回值,使用for循环遍历数组a,将数组a中的每一个元素设置为val。

六、Arrays.sort( )

1.作用:Arrays.sort( ) 的作用是对数组进行排序(快速排序)

2.参数:需要排序的数组

3.返回值:没有返回值 void

4.举例:

package com.ztt.Demo02;import java.util.Arrays;public class demo07 {public static void main(String[] args) {int[] number={6,8,9,7,1};System.out.println("排序前:"+Arrays.toString(number));Arrays.sort(number);System.out.println("排序后:"+Arrays.toString(number));}}import java.util.Arrays;public class demo09 {public static void main(String[] args) {// 通过Arrays工具类的sort()方法char[] arr= {'l','k','j','h','g','f','d','s','a'};System.out.println(arr);Arrays.sort(arr);System.out.println(arr);}}

输出结果:

排序前:[6, 8, 9, 7, 1]
排序后:[1, 6, 7, 8, 9]lkjhgfdsa
adfghjkls

 5.源代码解读:

 Arrays.sort( )通过传入一个需要排序的数组,返回值为void,方法中调用了DualPivotQuicksort类的sort()方法。

七、Arrays.toString( )

1.作用:Arrays.toString( )的作用是将数组转换为字符串的形式表示,查看数组的内容。

2.参数:一个数组

3.返回值:字符串

4.举例:

import java.util.Arrays;public class demo06 {public static void main(String[] args) {//无序数组int[] numbers= {1,2,9,4,5,7};System.out.println(Arrays.toString(numbers));}
}

输出结果:

[1, 2, 9, 4, 5, 7]

  5.源代码解读:

Arrays.toString( )通过传入一个整数数组a作为参数,并返回一个字符串。由于它是静态的,你不需要创建类的实例就可以调用这个方法。

判断传入的数组a是null,则方法直接返回字符串"null"。计算数组中最后一个元素的下标(a.length - 1),并将其存储在变量iMax中。然后,如果iMax等于-1(即数组为空),则方法返回字符串"[ ]"。

创建一个StringBuilder对象b,用于构建数组的字符串表示。StringBuilder是一个可变对象,用于高效地构建和修改字符串。向StringBuilder对象b追加左方括号[,表示数组的开始。for遍历数组,向StringBuilder对象b追加数组a的第i个元素。检查当前索引i是否等于最后一个元素的索引iMax。如果是,则向StringBuilder对象b追加右方括号],并将StringBuilder转换为字符串返回。如果当前元素不是最后一个元素,则在追加当前元素后,还向StringBuilder对象b追加逗号和空格。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

删除windows自带输入法

ctrl shift F 搜狗简繁体切换

【第二十四课】二分图:acwing-860染色法判定二分图 / acwing-861二分图的最大匹配 ( c++代码 )

目录 二分图是什么 acwing-860染色法判定二分图 染色法 代码 acwing-861二分图的最大匹配 思路 代码 二分图是什么 学习二分图的目的就是一些题目可以简化成二分图的模型来求解。 二分图也就是&#xff1a;一个无向图顶点集&#xff0c;分成了两堆顶点(可以理解为两…

分布式文件系统 SpringBoot+FastDFS+Vue.js【三】

分布式文件系统 SpringBootFastDFSVue.js【三】 七、创建后台--分角色管理7.1.创建后台数据库表7.2.创建实体类7.2.1.Admin7.2.2.Menu7.2.3.MenuBean7.2.4.Role7.2.5.RoleMenu 7.3.编辑配置文件application.yml7.4.编写工具类7.4.1.AuthContextHolder7.4.2.HttpUtils7.4.3.Stri…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…

Sora 和之前 Runway 那些在架构上有啥区别呢?

问&#xff1a;Sora 和之前 Runway 那些在架构上有啥区别呢&#xff1f; 答&#xff1a;简单来说 Runway 是基于扩散模型&#xff08;Diffusion Model&#xff09;的&#xff0c;而 Sora 是基于 Diffusion Transformer。 Runway、Stable Diffusion 是基于扩散模型&#xff08…

MySQL 插入10万条数据性能分析

MySQL 插入10万条数据性能分析 一、背景 笔者想复现一个索引失效的场景&#xff0c;故需要一定规模的数据作支撑&#xff0c;所以需要向数据库中插入大约一百万条数据。那问题就来了&#xff0c;我们应该怎样插入才能使插入的速度最快呢&#xff1f; 为了更加贴合实际&#…

cool Node后端 中实现中间件的书写

1.需求 在node后端中&#xff0c;想实现一个专门鉴权的文件配置&#xff0c;可以这样来解释 就是 有些接口需要token调用接口&#xff0c;有些接口不需要使用token 调用 这期来详细说明一下 什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理&#xf…

如何用AI绘画工具最好最省时省事的方法制作个性化头像框?

原文章链接&#xff1a;如何根据游戏素材制作主题头像框&#xff1f;实战教程来了&#xff01; - 优设网 - 学设计上优设 教程专区&#xff1a;AI绘画&#xff0c;AI视频&#xff0c;AI写作等软件类型AI教程&#xff0c; AI工具专区&#xff1a;AI工具-喜好儿aigc 在 APP 的…

「算法」二分查找1:理论细节

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;算法详解 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 二分查找算法简介 这个算法的特点就是&#xff1a;细节多&#xff0c;出错率高&#xff0c;很容易就写成死循环有模板&#xff0c;但…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a; 精确 自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他…

PyTorch-线性回归

已经进入大模微调的时代&#xff0c;但是学习pytorch&#xff0c;对后续学习rasa框架有一定帮助吧。 <!-- 给出一系列的点作为线性回归的数据&#xff0c;使用numpy来存储这些点。 --> x_train np.array([[3.3], [4.4], [5.5], [6.71], [6.93], [4.168],[9.779], [6.1…

win32汇编获取系统信息

.data fmt db "页尺寸&#xff1a;%d",0 db "" lpsystem SYSTEM_INFO <?> szbuf db 200 dup(0) .const szCaption db 系统信息,0 .code start: invoke GetSystemInfo,addr lpsystem …

Java编程在工资信息管理中的最佳实践

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

用Java实现简单的图书管理系统

目录 1.总体框架 2.book包 Books类 booklist类 3.operation包 IO接口&#xff1a; addbooks类&#xff1a; borrowbooks类&#xff1a; delbooks类&#xff1a; returnbooks类&#xff1a; exit类&#xff1a; 4.user包 user类 Adminuser类&#xff08;难点&#…

嵌入式linux驱动开发篇之设备树

什么是设备树&#xff1f; 设备树&#xff08;Device Tree&#xff09;是一种用于描述嵌入式系统硬件组件及其连接关系的数据结构。它被广泛用于嵌入式 Linux 系统&#xff0c;尤其是针对使用多种不同架构和平台的嵌入式系统。它是一种与硬件描述相关的中间表示形式&#xff0c…

如何生成狗血短剧

如何生成狗血短剧 狗血短剧剧本将上述剧本转成对话 狗血短剧剧本 标题&#xff1a;《爱的轮回》 类型&#xff1a;现代都市爱情短剧 角色&#xff1a; 1. 林晓雪 - 女&#xff0c;25岁&#xff0c;职场小白&#xff0c;善良单纯 2. 陆子轩 - 男&#xff0c;28岁&#xff0c;公…

WINCC如何新增下单菜单,切换显示页面

杭州工控赖工 首先我们先看一下&#xff0c;显示的效果&#xff0c;通过下拉菜单&#xff0c;切换主显示页面。如图一&#xff1a; 图1 显示效果 第一步&#xff1a; 通过元件新增一个组合框&#xff0c;见图2&#xff1b; 组合框的设置&#xff0c;设置下拉框的长宽及组合数…

Rust 数据结构与算法:1算法分析之乱序字符串检查

Rust 数据结构与算法 一、算法分析 算法是通用的旨在解决某种问题的指令列表。 算法分析是基于算法使用的资源量来进行比较的。之所以说一个算法比另一个算法好,原因就在于前者在使用资源方面更有效率,或者说前者使用了更少的资源。 ●算法使用的空间指的是内存消耗。算法…

基于springboot智慧外贸平台源码和论文

网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合&#xff0c;利用java技术建设智慧外贸平台&#xff0c;实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展&#xff0c;丰富智慧外贸管理经验能起到不少的促进作用。 智慧外贸平台能够通过互…

神经网络算法原理

目录 得分函数 数学表示 计算方法 损失函数 ​编辑 前向传播 反向传播 ​编辑 整体架构 正则化的作用 数据预处理 ​过拟合解决方法 得分函数 得分函数是在机器学习和自然语言处理中常用的一种函数&#xff0c;用于评估模型对输入数据的预测结果的准确性或匹配程度。…