Arrays工具类的常见方法总结

一、Arrays.asList( )

1、作用

Arrays.asList( )可以将一个数组以集合的形式传入一个集合对象。通常用来将一组元素全部添加到集合中。

2、参数及返回值

参数:一组动态参数

返回值:List<T>集合

3、应用举例

List<String> boyList=Arrays.asList("陈","杨","张","李");
ArrayList<String> list=new ArrayList<String>();
list.addAll(boyList);
System.out.println(list);

输出结果:[陈, 杨, 张, 李] 

4、源代码解读

        通过上图我们可知, Arrays.asList( )是通过创建一个ArrayList对象,然后将动态参数传入,并返回该集合。

二、Arrays.binarySearch( )

1、作用

Arrays.binarySearch( )方法可以在一个有序数组中,查找到目标元素

2、参数及返回值

参数一:目标数组

参数二:需要查找的元素

返回值:查找到的元素的下标-1

3、应用举例

当目标数组为有序数组时

int[] number= {2,4,5,7,8,9};//有序数组
int target=7;
int index1=Arrays.binarySerach(number,target);
System.out.println(target+"在位置"+index1);

输出结果:7在位置3 

当目标数组为无序数组时

int[] number1= {3,27,9,13,7};//无序数组
int target=7;
//先排序
Arrays.sort(number1);
System.out.println(Arrays.toString(number1));
//再查找
int index2=Arrays.binarySerach(number1,target);
System.out.println(target+"在位置"+index2);

输出结果:

[3, 7, 9, 13, 27]

7在位置1(是经过快速排序后的下标位置) 

4、源代码解读

        binarySearch()方法是调用了 binarySearch0()方法,low为0,high为数组a的长度减一,然后通过计算中间值(mid),再用中间值和目标元素相比较。

        若中间值大于目标值时,说明目标元素可能在目标数组的前半区,则将high赋为mid-1后继续计算中间值,以此循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数;

        若中间值小于目标值时,说明目标元素可能在目标数组的后半区,则将low赋为mid+1后继续计算中间值,以此循环,直到low<=high时,循环结束。若找到目标元素,则返回其下标,若没找到,则返回一个负数;

三、System.arraycopy( )

1、作用

System.arraycopy( )方法的作用是复制数组

2、参数

参数一:源数组

参数二:从源数组中开始复制的位置

参数三:目标数组

参数四:开始存储的位置

参数五:复制的长度

3、应用举例

int[] number={0,4,64,28,99,12};
int[] target=new int[number.length];
System.out.println("目标数组为:"+Arrays.toString(target));
System.arraycopy(number,0,target,0,number.length);
System.out.println("目标数组为:"+Arrays.toString(target));

输出结果:

目标数组为:[0, 0, 0, 0, 0, 0]
目标数组为:[0, 4, 64, 28, 99, 12] 

三、Arrays.copyOf( )

1、作用

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

2、参数及返回值

参数一:源数组

参数二:复制元素的个数

返回值:数组

3、应用举例

int[] number={0,4,64,28,99,12};
System.out.println("原数组为:"+Arrays.toString(number));
System.out.println("原数组地址为:"+number);

//复制前三个元素
//从下标0开始复制三个元素
int[] arr1=Arrays.copyOf(number,3);
System.out.println("前三个元素为:"+Arrays.toString(arr1));
System.out.println("前三个元素地址为:"+arr1);

//复制全部元素
int[] arr2=Arrays.copyOf(number,number.length);
System.out.println("全部元素为:"+Arrays.toString(arr2));
System.out.println("全部元素地址为:"+arr2);

输出结果:

原数组为:[0, 4, 64, 28, 99, 12]
原数组地址为:[I@15db9742
前三个元素为:[0, 4, 64]
前三个元素地址为:[I@6d06d69c
全部元素为:[0, 4, 64, 28, 99, 12]
全部元素地址为:[I@7852e922 

4、源代码解读

         通过上图我们可以知道, Arrays.copyOf( )方法是通过创建一个以传入的参数二为长度的数组,然后通过System.arraycopy( )方法,从源数组下标为0的位置开始复制,复制到新创建的数组中,如果newLength小于源数组长度时,说明源数组的长度足够长,可以满足我们复制newLength个元素的需求;若newLength大于源数组长度时,说明源数组的长度不够,只能将源数组中的元素全部复制到新数组。然后返回新数组。 

四、Arrays.copyOfRange( )

1、作用

Arrays.copyOfRange( )方法可以复制指定区间的元素

2、参数及返回值

参数一:目标数组

参数二:开始复制的位置

参数三:截至位置

3、应用举例

//复制指定区间元素:从下标[2,4)
int[] number={0,4,64,28,99,12};
int[] arr3=Array.copyOfRange(number,2,4);
System.out.println("区间复制元素为:"+Arrays.toString(arr3));//[64, 28]
System.out.println("区间复制元素地址为:"+arr3);
//复制后五个元素
int[] arr4=Arrays.copyOfRange(number,1,number.length);
System.out.println("区间复制元素为:"+Arrays.toString(arr4));
System.out.println("区间复制元素地址为:"+arr4);

 输出结果:

区间复制元素为:[64, 28]
区间复制元素地址为:[I@15db9742
区间复制元素为:[4, 64, 28, 99, 12]
区间复制元素地址为:[I@6d06d69c

4、源代码解读

         通过上图我们可以知道,当开始复制的位置小于截止位置时,即newLength为负数时,抛出参数非法异常当newLength大于零时,通过System.arraycopy( )方法,从源数组下标为0的位置开始复制,复制到新创建的数组中,如果newLength小于源数组长度时,说明源数组的长度足够长,可以满足我们复制newLength个元素的需求;若newLength大于源数组长度时,说明源数组的长度不够,只能将源数组中的元素全部复制到新数组。然后返回新数组。 

五、Arrays.fill( )

1、作用

fill()方法可以将一个数组全部填充为目标值

2、参数及返回值

参数一:目标数组

参数二:填充的数字

返回值:无返回值

3、应用举例

//fill()方法
int[] number1 =new int[5];
System.out.println("填充前:"+Arrays.toString(number1));
Arrays.fill(number,-2);
System.out.println("填充后:"+Arrays.toString(number1));

输出结果:

填充前:[0, 0, 0, 0, 0]
填充后:[-2, -2, -2, -2, -2]

int[] number2={1,2,3,4,5};
System.out.println("填充前:"+Arrays.toString(number2));
Arrays.fill(number2,-2);
System.out.println("填充后:"+Arrays.toString(number2));

 输出结果:

填充前:[1, 2, 3, 4, 5]
填充后:[-2, -2, -2, -2, -2]

4、源代码解读

        通过上图我们可以知道,Arrays.fill()方法是通过for循环来遍历数组(参数1(a)),逐个取出数组中的元素,并将它们赋值为我们需要填充的数字(参数2(val))。

六、Arrays.sort( )

1、作用

Arrays.sort( )可以快速对一个数组进行排序

2、参数及返回值

参数:一个需要排序的数组

返回值:无返回值

3、应用举例

int[] number1= {3,27,9,13,7};//无序数组
Arrays.sort(number1);
System.out.println(Arrays.toString(number1));

输出结果:[3, 7, 9, 13, 27] 

4、源代码解读

 

 

 

七、Arrays.toString( )

1、作用

Arrays.toString( )方法可以将数组以[ num1, num2 , num3, num4]的格式输出

2、参数及返回值

参数:一个需要输出的数组

返回值:字符串

3、应用举例

int[] array={1,2,3,4,5};
System.out.println(array);
System.out.println(Arrays.toString(array));

输出结果:

[I@15db9742
[1, 2, 3, 4, 5] 

4、源代码解读

 

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

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

相关文章

2023年程序员观察报告

春节假期已过&#xff0c;2023年悄然过去&#xff0c;2024年已经到来&#xff0c;无论2023年是快乐的、成长的、积极的&#xff0c;亦或是痛苦的、寂寥的、迷茫的&#xff0c;都要恭喜在座的各位程序员又熬过了一年&#xff01; ①加班篇 2023年&#xff0c;你完成了 132个需求…

you-get,一个超强的 Python 库

你好&#xff0c;我是坚持分享干货的 EarlGrey&#xff0c;翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。 如果我的分享对你有帮助&#xff0c;请关注我&#xff0c;一起向上进击。 现在在线视频超火爆&#xff0c;可是我还是更倾向于将视频下载至本地…

C++-手把手教你模拟实现string

1.string的成员变量 模拟实现string只需要三个成员变量&#xff0c;capacity&#xff0c;size&#xff0c;_str&#xff0c;也就是容量&#xff0c;数据大小&#xff0c;指向字符串的指针。 2.string的构造函数 2.1 使用字符串构造 使用字符串来构造一个string类的对象&…

463. Island Perimeter(岛屿的周长)

问题描述 给定一个 row x col 的二维网格地图 grid &#xff0c;其中&#xff1a;grid[i][j] 1 表示陆地&#xff0c; grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连&#xff08;对角线方向不相连&#xff09;。整个网格被水完全包围&#xff0c;但其中恰好有…

LTP/pyltp安装和使用教程

文章目录 LTP介绍分句分词加载外部词典个性化分词 词性标注命名实体识别NER依存句法分析语义角色标注 LTP介绍 官网&#xff1a;https://ltp.ai/ 下载可以到官网的下载专区&#xff1a;https://ltp.ai/download.html 语言技术平台&#xff08;Language Technology Platform&am…

Codeforces Round 925 (Div. 3)(A,B,C,D,E,F,G)

比赛链接 这场打的很顺&#xff0c;感觉难度和 div 4 差不多&#xff0c;不是很难。D题稍微考了考同余的性质&#xff0c;E题直接模拟过程即可&#xff0c;F题也可以暴力模拟或者拓扑排序&#xff0c;G题是个数学题&#xff0c;是个简单隔板法。A到F题都可以直接模拟就有点离谱…

嵌入式 day23

链接命令 建立链接文件&#xff1a;ln 命令 命令名称&#xff1a;ln 命令所在路径&#xff1a;/bin/ln 执行权限&#xff1a;所有用户 语法&#xff1a;ln -s [原文件] [目标文件] -s 创建软链接 功能描述&#xff1a;生成链接文件 范例&#xff1…

[嵌入式系统-24]:RT-Thread -11- 内核组件编程接口 - 网络组件 - TCP/UDP Socket编程

目录 一、RT-Thread网络组件 1.1 概述 1.2 RT-Thread支持的网络协议栈 1.3 RT-Thread如何选择不同的网络协议栈 二、Socket编程 2.1 概述 2.2 UDP socket编程 2.3 TCP socket编程 2.4 TCP socket收发数据 一、RT-Thread网络组件 1.1 概述 RT-Thread 是一个开源的嵌入…

不错的PMO 2024建设规划长图

公众号"PMO前沿"是国内最大的PMO组织&#xff0c;经常各个城市举办线下线上活动&#xff0c;很多专家&#xff0c;相当赞&#xff0c;而且每天还分享不少文章&#xff08;春节都不停更&#xff0c;相当感动&#xff09;&#xff0c;建议关注。看到一个不错的PMO 组织…

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 …

四川古力未来科技公司抖音小店:靠谱的新电商之旅

随着互联网的飞速发展&#xff0c;电商行业日新月异&#xff0c;新兴平台如抖音小店正成为消费者新的购物天堂。在众多抖音小店中&#xff0c;四川古力未来科技公司的店铺以其独特的魅力吸引了众多消费者的目光。那么&#xff0c;四川古力未来科技公司抖音小店到底靠不靠谱呢&a…

【数据结构】17 二叉树的建立

二叉树的建立 由于树是非线性结构&#xff0c;创建一颗二叉树必须首先确定树中结点的输入顺序&#xff0c;常用方法是先序创建和层序创建。 层序创建所用的节点输入序列是按数的从上至下从左到右的顺序形成的各层的空结点输入数值0。在构造二叉树过程中需要一个队列暂时存储各…

鸿蒙开发系列教程(二十三)--List 列表操作(2)

列表样式 1、设置内容间距 在列表项之间添加间距&#xff0c;可以使用space参数&#xff0c;主轴方向 List({ space: 10 }) { … } 2、添加分隔线 分隔线用来将界面元素隔开&#xff0c;使单个元素更加容易识别。 startMargin和endMargin属性分别用于设置分隔线距离列表侧…

【测试运维】性能测试经验文档总结第3篇:VuGen详解(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论性能测试相关知识。入门阶段&#xff1a;认识性能测试分类-(负载测试、压力测试、并发测试、稳定性测试)&#xff0c;常用性能测试指标-(吞吐量、并发数、响应时间、点击数...)&#xff0c;性能测试工具选择。性能脚本&…

Java实现停车场收费系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…

Java面向对象案例之招待朋友Friend(二)

类主要结构图 抽象类&#xff1a;Friend&#xff08;朋友作为父类&#xff09;子类&#xff1a;Chinese&#xff08;中国国籍&#xff09;、Foreigner&#xff08;外国国籍&#xff09;主人&#xff1a;Master&#xff08;主人&#xff0c;用来款待客人&#xff09;测试类&…

ClickHouse--12-可视化工具操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 可视化工具操作1 tabixhttp://ui.tabix.io/ 2 DBeaverhttps://dbeaver.io/download/ 可视化工具操作 1 tabix tabix 支持通过浏览器直接连接 ClickHouse&#xff…

Kubernetes 元信息与控制器模型

一、资源元信息&#xff1a; Kubernetes 的资源对象组成&#xff1a;主要包括了 Spec、Status 和元数据。其中 Spec 部分用来描述期望的状态&#xff0c;Status 部分用来描述观测到的状态。 元数据主要包括了&#xff1a;Labels 用来识别资源的标签&#xff1b;Annotations 用…

在 Android 上部署自定义 YOLOv8 教程

在本教程中&#xff0c;我将向您展示如何在 Android 设备上使用自定义数据集部署 YOLOv8。想要了解如何在 Android 设备上使用您自己的数据集部署 YOLOv8&#xff1f;本文将展示如何操作。 Android 上的 自定义 YOLOv8 &#x1f525; ⚡️ 结果显示标题 对从 GoPro 流式传输到移…