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 …...
Lychee Rerank MM GPU算力:Qwen2.5-VL 7B模型在A10上16GB显存高效运行
Lychee Rerank MM GPU算力:Qwen2.5-VL 7B模型在A10上16GB显存高效运行 1. 引言:当多模态检索遇到“选择困难症” 想象一下,你正在一个庞大的多媒体资料库里搜索。你输入“一只在草地上玩耍的棕色小狗”,系统返回了100个结果&…...
费雪的竞争优势分析框架
费雪的竞争优势分析框架 关键词:费雪竞争优势分析框架、企业竞争优势、财务分析、行业分析、企业战略 摘要:本文深入探讨了费雪的竞争优势分析框架。该框架是评估企业竞争力的重要工具,通过多维度的分析帮助投资者和企业管理者判断企业在市场中的地位和发展潜力。文章首先介…...
重构macOS鼠标体验:从痛点到解决方案的技术探索
重构macOS鼠标体验:从痛点到解决方案的技术探索 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 【问题发现:被忽视的交互…...
Bidili Generator实操演示:LoRA权重强度与CFG Scale协同调优黄金组合
Bidili Generator实操演示:LoRA权重强度与CFG Scale协同调优黄金组合 1. 引言:当定制化风格遇上精细控制 如果你用过Stable Diffusion XL(SDXL)来生成图片,可能会遇到这样的困扰:好不容易找到一个喜欢的L…...
3分钟彻底搞定Axure RP汉化:免费中文语言包完整指南
3分钟彻底搞定Axure RP汉化:免费中文语言包完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在…...
错误处理与HTTP状态码:Zalando RESTful API Guidelines 的异常管理机制
错误处理与HTTP状态码:Zalando RESTful API Guidelines 的异常管理机制 【免费下载链接】restful-api-guidelines A model set of guidelines for RESTful APIs and Events, created by Zalando 项目地址: https://gitcode.com/gh_mirrors/re/restful-api-guideli…...
解放你的创造力:用TEdit打造泰拉瑞亚专属世界地图
解放你的创造力:用TEdit打造泰拉瑞亚专属世界地图 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you change…...
从Hive表平滑迁移到实时湖仓?试试用Apache Paimon的Format Table零成本接入
从Hive表平滑迁移到实时湖仓?Apache Paimon的Format Table零成本接入实战 1. 实时湖仓转型的痛点与破局之道 在传统大数据架构中,Hive作为批处理的核心组件已经服务了无数企业十数年。但随着实时分析需求的爆发式增长,单纯依靠Hive的T1模式越…...
Llama-3.2V-11B-cot与Dify集成:零代码构建企业AI智能体
Llama-3.2V-11B-cot与Dify集成:零代码构建企业AI智能体 最近和几个做企业服务的朋友聊天,大家普遍有个感觉:现在AI模型能力越来越强,但真要把它们用起来,门槛还是有点高。特别是对于业务部门的人来说,看着…...
跨平台终端与进程控制:从原理到实践
跨平台终端与进程控制:从原理到实践 【免费下载链接】node-pty Fork pseudoterminals in Node.JS 项目地址: https://gitcode.com/gh_mirrors/no/node-pty 在现代软件开发中,终端交互和进程管理是不可或缺的核心能力。无论是构建IDE、开发自动化工…...
