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、源代码解读

 

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

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

相关文章

【知识整理】产研中心岗位评定标准之大数据岗位

为贯彻执行集团数字化转型的需要,该知识库将公示集团组织内各产研团队不同角色成员的职务“职级”岗位的评定标准; 一、定级定档目的 通过对公司现有岗位及相应岗位员工的工作能力、工作水平进行客观公正评定,确定各岗位的等级及同等级岗位员工对应的档级,从而为员工以后的晋升…

WordPress站点如何实现发布文章即主动推送到百度快速收录和普通收录?

我们在WordPress后台成功发布文章之后&#xff0c;如果靠搜索引擎来抓取的话&#xff0c;可能会比较慢&#xff0c;所以十分有必要将我们成功发布的文章马上提交到百度、必应等搜索引擎中。下面boke112百科就跟大家说一说WordPress站点如何实现发布文章即主动推送到百度快速收录…

函数、极限、连续——刷题(5

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 首先可能想到的是答案为0&#xff0c;但是不可以把 直接化简为n 这里要用到分子分母的平方差&#xff0c;sin^2的周期为π&#x…

【知识整理】招人理念、组织结构、招聘

1、个人思考 几个方面&#xff1a; 新人&#xff1a;选、育、用、留 老人&#xff1a;如何甄别&#xff1f; 团队怎么演进&#xff1f; 有没有什么注意事项 怎么做招聘&#xff1f; 2、 他人考虑 重点&#xff1a; 1、从零开始&#xff0c;讲一个搭建团队的流程 2、标…

【Anaconda】conda创建、删除、查看虚拟环境,安装pytorch

1.删除环境 首先退出现有的环境 conda deactivate然后查看要删除的环境名称与路径 conda env list接下来就可以删除环境了 有两种方法 方法1&#xff1a; conda env remove -p 要删除的虚拟环境路径对我来说就是&#xff1a; conda env remove -p D:\Anaconda3\envs\MVDet…

生活篇——华为手机去除负一屏

华为手机去除如下图的恶心负一屏 打开华为的应用市场app 进入&#xff1a;我的-设置-国家/地区&#xff08;改为俄罗斯&#xff09;-进入智慧助手检查更新并更新智慧助手。 然后重复开始的操作&#xff0c;将地区改回中国&#xff0c;这样就没有负一屏了。

Linux platform tree下的单总线驱动程序设计(DHT11)

目录 概述 1 认识DHT11 1.1 DHT11特性 1.2 DHT11数据格式 1.3 DHT11与MCU通信 1.4 DHT11信号解析 1.4.1 起始信号 1.4.2 解析信号0 1.4.3 解析信号1 2 驱动开发 2.1 硬件接口 2.2 更新设备树 2.2.1 添加驱动节点 2.2.2 编译.dts 2.2.3 更新板卡中的.dtb 2.3 驱…

linux系统zabbix监控配置钉钉告警

zabbix配置钉钉告警 配置钉钉告警环境准备配置钉钉脚本文件钉钉日志目录编写脚本浏览器配置钉钉告警中文消息告警模版为用户添加报警媒介添加监控项》添加触发器》 添加玩监控项和触发器后添加动作 配置钉钉告警 环境准备 创建钉钉内部群创建自定义机器人记录加签地址和webho…

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

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

Jmeter接口测试实战篇:10分钟学会Jmeter的用法

一提到接口测试&#xff0c;通常大家会有这样的疑问&#xff1a;前端测试不是已经覆盖到各种业务逻辑了吗&#xff1f;为什么还要做接口测试&#xff0c;接口测试和前端测试是不是重复了&#xff1f;对于这个问题&#xff0c;可以从下面几个方面来解释&#xff1a; 什么是接口…

我的NPI项目之Android USB 系列(一) - USB的发展历史

设计目的 USB was designed to standardize the connection of peripherals to personal computers, both to exchange data and to supply electric power. 一个是为了标准化电脑连接外设的方法。 能够支持电脑和外设的数据交互和&#xff08;对外&#xff09;供电。 目前已…

【Linux】程序地址空间 -- 详解 Linux 2.6 内核进程调度队列 -- 了解

一、程序地址空间回顾 在学习 C/C 时&#xff0c;我们知道内存会被分为几个区域&#xff1a;栈区、堆区、全局/静态区、代码区、字符常量区等。但这仅仅是在语言层面上的理解&#xff0c;是远远不够的。 如下空间布局图&#xff0c;请问这是物理内存吗&#xff1f; 不是&…

【机器学习基础】决策树(Decision Tree)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐特别提醒&#xff1a;针对机器学习&#xff0c;特别开始专栏&#xff1a;机器学习python实战 欢迎订阅&am…

LEETCODE 164. 破解闯关密码

class Solution { public:string crackPassword(vector<int>& password) {vector<string> password_str;for(int i0;i<password.size();i){password_str.push_back(to_string(password[i]));}//希尔排序int gappassword.size()/2;while(gap>0){for(int i…

【机器学习案例3】从科学论文图片中提取标题、作者和摘要【含源码】

在这个项目中,我的目标是从科学论文图片中提取某些部分(标题、作者和摘要)。预期提取部分是科学论文中常见的部分,例如标题、摘要和作者。输入与最终结果。我的输入是将第一页纸转换成图像。最终结果是一个 txt 文件,其中包含标题、作者和摘要部分,如下图1和图2所示。我将…

线索化二叉树(先序,中序,后序)+线索化二叉树的遍历【java详解】

目录 线索化二叉树的基本介绍&#xff1a; 举个栗子&#xff1a; 二叉树的中序线索化&#xff1a; 创建HeroNode类&#xff0c;表示节点信息&#xff1a; 编写中序线索化方法代码&#xff1a; 中序线索化遍历代码&#xff1a; 测试代码&#xff1a; 测试结果&#xff1a…

CCF编程能力等级认证GESP—C++6级—20231209

CCF编程能力等级认证GESP—C6级—20231209 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)闯关游戏工作沟通 答案及解析单选题判断题编程题1编程题2 单选题…

sql语句学习(一)--查询

【有道云笔记】基本sql语句2—查询基础 数据库表结构 DROP TABLE IF EXISTS class; CREATE TABLE class (id int(11) NOT NULL AUTO_INCREMENT,class_num varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 班级号,class_name varchar(255) CHARACTE…

C++ STL->list模拟实现

theme: smartblue list list文档 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向 其前一个元素…

理解并实现OpenCV中的图像平滑技术

导读 图像模糊&#xff08;也称为图像平滑&#xff09;是计算机视觉和图像处理中的基本操作之一。模糊图像通常是噪声减少、边缘检测和特征提取等应用的第一步。在本博客中&#xff0c;我们将重点介绍如何使用Python中的OpenCV库应用多种模糊技术。 理论概述&#xff1a; 基本…