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为低位0,high为高位数组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追加逗号和空格。
相关文章:
Arrays工具类的常见方法总结
一、Arrays.asList( ) 1.作用:Arrays.asList( )方法的作用是将数组转换成List,将List中的全部集合对象添加至ArrayList集合中 2.参数:动态参数 (T... a) 3.返回值:List 集合 List<T> 4.举例: package com…...
物联网和人工智能的融合
物联网和人工智能的融合 1. 物联网和人工智能的融合2. 芯片技术的进步3. 安全和隐私保护挑战4. 软件开发和调试技术的创新5. 自动化和智能化趋势 1. 物联网和人工智能的融合 随着物联网和人工智能技术的快速发展,嵌入式系统将更多地与物联网设备和人工智能算法相结…...
【微信小程序】wxss 和 css 、wxml 和 html 区别
wxss 和 css 区别 wxss 支持小程序特有的选择器和 样式属性 scroll-into-view cover-view 等wxss 引入了 rpx 单位,可以根据屏幕宽度进行自适应,使得开发者可以更方便的处理不同尺寸屏幕的适配问题。wxss 背景图片只能引入外链,不能使用本地…...
python统计分析——使用AIC进行模型选择
参考资料:用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 import matplotlib.pyplot as plt import seaborn as sns sns.set() # 用于估计统计…...
Android 11以上获取不到第三方app是否安装
开年第一篇,处理了一下年前的小问题。 问题:本地app跳转到第三方app地图进行导航,获取不到第三方地图是否安装。 解决: 1.添加包名 This can be done by adding a <queries> element in the Android manifest.在app下的…...
Java的编程之旅24——private私有方法
1.private的介绍 在面向对象编程中,private是一种访问修饰符,用于限制成员的访问范围。私有成员只能在所属的类内部访问,对外部的类或对象是不可见的。 private的使用可以带来以下几个好处: 封装实现细节:私有成员可…...
为什么在MOS管开关电路设计中使用三极管容易烧坏?
MOS管作为一种常用的开关元件,具有低导通电阻、高开关速度和低功耗等优点,因此在许多电子设备中广泛应用。然而,在一些特殊情况下,我们需要在MOS管控制电路中加入三极管来实现一些特殊功能。然而,不同于MOS管ÿ…...
CSS的注释:以“ /* ”开头,以“ */ ”结尾
CSS的注释:以“ /* ”开头,以“*/”结尾 CSS的注释: 以“ /* ”开头,以“ */ ”结尾 在CSS中,注释是一种非常重要的工具,它们可以帮助开发者记录代码的功能、用法或其他重要信息。这些信息对于理解代码、维护代码以及与他人合作都…...
MySQL中常见的几种日志类型【重点】
在MySQL中,有几种不同类型的日志,用于记录数据库的活动和操作,以便于故障排查、性能调优和数据恢复等目的。以下是MySQL中常见的几种日志类型: 错误日志(Error Log): 错误日志记录了MySQL服务器…...
odoo16-API(Controller)带有验证访问的接口
odoo16-API(Controller)带有验证访问的接口 目前我使用odoo原生的登录token来验证登陆的有效性 废话不多说直接上代码 # 测试获取session_id import requests class GetOdooData(http.Controller):def getOdooToken(self):# http://localhost:8123访问…...
Eclipse项目间的引用
我们在开发的时候,有时候需要把一个大的项目打散,尤其是现在微服务的架构很流行,一个大的项目往往被拆成很多小的项目,而有的项目作为公共工程被独立出来,比如有个工程专门提供各种Util工具类,有的工程专门…...
matplotlib使用案例3:通过自定义图例类实现图例的任意方向(行 or 列)的排列
这个方法的核心依然是基于matplotlib.legend._get_legend_handles_labels函数。然后将得到的handlers, labels进行重排,使得即使再调用Legend类的绘制方法对图例进行列排列,最终的效果也是图例的行显示,如[1、2、3、4、5、6],当指定ncols=2,Legend类的绘制方法得到的图例如…...
js设计模式:依赖注入模式
作用: 在对象外部完成两个对象的注入绑定等操作 这样可以将代码解耦,方便维护和扩展 vue中使用use注册其他插件就是在外部创建依赖关系的 示例: class App{constructor(appName,appFun){this.appName appNamethis.appFun appFun}}class Phone{constructor(app) {this.nam…...
【性能最佳实践】事务处理和读写策略原来这么关键!
MongoDB针对初级,中级及熟练的技术开发人员推出系列技术文章与行业案例。深入浅出地剖析MongoDB产品基础原理,使用技巧,典型行业场景及应用,还有Code Demo及线上线下活动推荐! 欢迎阅读有关MongoDB性能最佳实践的系列…...
【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子
作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示,其中每个元素可以是墙、地板或…...
开店怎么做进销存
开设一家店铺,无论是实体店还是网店,进销存管理都是确保店铺正常运营和盈利的关键环节。一款良好的进销存管理软件可以帮助你更好地掌握库存情况、优化采购策略、提高销售效率,并最终实现盈利目标。那么,开店怎么做进销存管理呢&a…...
UE4 C++联网RPC教程笔记(三)(第8~9集)完结
UE4 C联网RPC教程笔记(三)(第8~9集)完结 8. exe 后缀实现监听服务器9. C 实现监听服务器 8. exe 后缀实现监听服务器 前面我们通过蓝图节点实现了局域网连接的功能,实际上我们还可以给项目打包后生成的 .exe 文件创建…...
程序员一定要远离“钻研技术无用,搞钱才是正道”的言论
不知道大家有没有刷到过这样的言论: "程序员真的不要花大量时间研究底层代码,技术钻研的再高级再牛也逃不过被优化的下场。 前辈们开发一个功能用一天,我开发一个功能得用一个星期,只会显得我像一个技术菜鸟࿰…...
el-table同时固定左列和右列时,出现错误情况
最近遇到一个问题,就是需求是要求表格同时固定序号列和操作列,我们用的是饿了么组件库的el-table,如下图,出现了错误情况: 解决方法就是使用doLayout方法: 如果使用了keep-alive,可以在activated里执行doLayout方法: activated() {this.$nextTick(() => {this.$ref…...
django自定义后端过滤
DRF自带的过滤 第一个 DjangoFilterBackend 是需要安装三方库见[搜索:多字段筛选]两外两个是安装注册了rest_framework就有。 如上图,只要配置了三个箭头所指的方向,就能使用。 第一个单字段过滤 用户视图集中加上filterset_fields …...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...
鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...
