当前位置: 首页 > news >正文

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追加逗号和空格。

相关文章:

Arrays工具类的常见方法总结

一、Arrays.asList( ) 1.作用&#xff1a;Arrays.asList( )方法的作用是将数组转换成List&#xff0c;将List中的全部集合对象添加至ArrayList集合中 2.参数&#xff1a;动态参数 (T... a) 3.返回值&#xff1a;List 集合 List<T> 4.举例&#xff1a; package com…...

物联网和人工智能的融合

物联网和人工智能的融合 1. 物联网和人工智能的融合2. 芯片技术的进步3. 安全和隐私保护挑战4. 软件开发和调试技术的创新5. 自动化和智能化趋势 1. 物联网和人工智能的融合 随着物联网和人工智能技术的快速发展&#xff0c;嵌入式系统将更多地与物联网设备和人工智能算法相结…...

【微信小程序】wxss 和 css 、wxml 和 html 区别

wxss 和 css 区别 wxss 支持小程序特有的选择器和 样式属性 scroll-into-view cover-view 等wxss 引入了 rpx 单位&#xff0c;可以根据屏幕宽度进行自适应&#xff0c;使得开发者可以更方便的处理不同尺寸屏幕的适配问题。wxss 背景图片只能引入外链&#xff0c;不能使用本地…...

python统计分析——使用AIC进行模型选择

参考资料&#xff1a;用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是否安装

开年第一篇&#xff0c;处理了一下年前的小问题。 问题&#xff1a;本地app跳转到第三方app地图进行导航&#xff0c;获取不到第三方地图是否安装。 解决&#xff1a; 1.添加包名 This can be done by adding a <queries> element in the Android manifest.在app下的…...

Java的编程之旅24——private私有方法

1.private的介绍 在面向对象编程中&#xff0c;private是一种访问修饰符&#xff0c;用于限制成员的访问范围。私有成员只能在所属的类内部访问&#xff0c;对外部的类或对象是不可见的。 private的使用可以带来以下几个好处&#xff1a; 封装实现细节&#xff1a;私有成员可…...

为什么在MOS管开关电路设计中使用三极管容易烧坏?

MOS管作为一种常用的开关元件&#xff0c;具有低导通电阻、高开关速度和低功耗等优点&#xff0c;因此在许多电子设备中广泛应用。然而&#xff0c;在一些特殊情况下&#xff0c;我们需要在MOS管控制电路中加入三极管来实现一些特殊功能。然而&#xff0c;不同于MOS管&#xff…...

CSS的注释:以“ /* ”开头,以“ */ ”结尾

CSS的注释:以“ /* ”开头&#xff0c;以“*/”结尾 CSS的注释: 以“ /* ”开头&#xff0c;以“ */ ”结尾 在CSS中&#xff0c;注释是一种非常重要的工具&#xff0c;它们可以帮助开发者记录代码的功能、用法或其他重要信息。这些信息对于理解代码、维护代码以及与他人合作都…...

MySQL中常见的几种日志类型【重点】

在MySQL中&#xff0c;有几种不同类型的日志&#xff0c;用于记录数据库的活动和操作&#xff0c;以便于故障排查、性能调优和数据恢复等目的。以下是MySQL中常见的几种日志类型&#xff1a; 错误日志&#xff08;Error Log&#xff09;&#xff1a; 错误日志记录了MySQL服务器…...

odoo16-API(Controller)带有验证访问的接口

odoo16-API&#xff08;Controller&#xff09;带有验证访问的接口 目前我使用odoo原生的登录token来验证登陆的有效性 废话不多说直接上代码 # 测试获取session_id import requests class GetOdooData(http.Controller):def getOdooToken(self):# http://localhost:8123访问…...

Eclipse项目间的引用

我们在开发的时候&#xff0c;有时候需要把一个大的项目打散&#xff0c;尤其是现在微服务的架构很流行&#xff0c;一个大的项目往往被拆成很多小的项目&#xff0c;而有的项目作为公共工程被独立出来&#xff0c;比如有个工程专门提供各种Util工具类&#xff0c;有的工程专门…...

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针对初级&#xff0c;中级及熟练的技术开发人员推出系列技术文章与行业案例。深入浅出地剖析MongoDB产品基础原理&#xff0c;使用技巧&#xff0c;典型行业场景及应用&#xff0c;还有Code Demo及线上线下活动推荐&#xff01; 欢迎阅读有关MongoDB性能最佳实践的系列…...

【广度优先搜索】【网格】【割点】【 推荐】1263. 推箱子

作者推荐 视频算法专题 涉及知识点 广度优先搜索 网格 割点 并集查找 LeetCode:1263. 推箱子 「推箱子」是一款风靡全球的益智小游戏&#xff0c;玩家需要将箱子推到仓库中的目标位置。 游戏地图用大小为 m x n 的网格 grid 表示&#xff0c;其中每个元素可以是墙、地板或…...

开店怎么做进销存

开设一家店铺&#xff0c;无论是实体店还是网店&#xff0c;进销存管理都是确保店铺正常运营和盈利的关键环节。一款良好的进销存管理软件可以帮助你更好地掌握库存情况、优化采购策略、提高销售效率&#xff0c;并最终实现盈利目标。那么&#xff0c;开店怎么做进销存管理呢&a…...

UE4 C++联网RPC教程笔记(三)(第8~9集)完结

UE4 C联网RPC教程笔记&#xff08;三&#xff09;&#xff08;第8~9集&#xff09;完结 8. exe 后缀实现监听服务器9. C 实现监听服务器 8. exe 后缀实现监听服务器 前面我们通过蓝图节点实现了局域网连接的功能&#xff0c;实际上我们还可以给项目打包后生成的 .exe 文件创建…...

程序员一定要远离“钻研技术无用,搞钱才是正道”的言论

不知道大家有没有刷到过这样的言论&#xff1a; &#xff02;程序员真的不要花大量时间研究底层代码&#xff0c;技术钻研的再高级再牛也逃不过被优化的下场。 前辈们开发一个功能用一天&#xff0c;我开发一个功能得用一个星期&#xff0c;只会显得我像一个技术菜鸟&#xff0…...

el-table同时固定左列和右列时,出现错误情况

最近遇到一个问题,就是需求是要求表格同时固定序号列和操作列,我们用的是饿了么组件库的el-table,如下图,出现了错误情况: 解决方法就是使用doLayout方法: 如果使用了keep-alive,可以在activated里执行doLayout方法: activated() {this.$nextTick(() => {this.$ref…...

django自定义后端过滤

​ DRF自带的过滤 第一个 DjangoFilterBackend 是需要安装三方库见[搜索&#xff1a;多字段筛选]两外两个是安装注册了rest_framework就有。 如上图&#xff0c;只要配置了三个箭头所指的方向&#xff0c;就能使用。 第一个单字段过滤 用户视图集中加上filterset_fields …...

计算机网络Day03--物理层

信道复用技术 频分复用 时分复用 统计时分复用 频分复用&#xff08;FDM&#xff09; 最基本 将整个宽带分为多份&#xff0c;用户在分配到一定的频带后&#xff0c;在通信过程中自始至终都使用这个频带 所有的用户在同一时间占用不同的带宽资源&#xff0c;以并行的方式工…...

RabbitMQ节点故障的容错方案

RabbitMQ节点故障的容错方案 1. broker启动加载逻辑1.1 日志文件1.2 broker启动流程1.2.1 整体流程1.2.2 数据恢复流程 2. 队列高可用2.1 选主逻辑2.1.1 从节点晋升策略2.1.2 主队列选择策略 2.2 HA切换 3. 疑问和思考3.1 如果一个broker宕机&#xff0c;运行在broker上的队列数…...

瑞_Redis_初识Redis(含安装教程)

文章目录 1 初识Redis1.1 认识NoSQL1.1.1 结构化与非结构化1.1.2 关联和非关联1.1.3 查询方式1.1.4 事务1.1.5 总结 1.2 认识Redis1.2.1 介绍1.2.2 特征1.2.3 优势 1.3 安装Redis ★★★1.3.1 Linux安装Redis1.3.1.1 安装Redis依赖 1.3.2 Windows安装Redis1.3.2.1 安装步骤1.3.…...

Android进阶(二十九) 走近 IntentFilter

文章目录 一、什么是IntentFilter &#xff1f;二、IntentFilter 如何过滤隐式意图&#xff1f;2.1 动作测试2.2 类别测试2.3 数据测试 一、什么是IntentFilter &#xff1f; 如果一个 Intent 请求在一片数据上执行一个动作&#xff0c; Android 如何知道哪个应用程序&#xf…...

vue+element下日期组件momentjs转换赋值问题

记录下使用momentjs转换日期字符串赋值给element的日期组件报错问题&#xff1b; <el-date-pickerv-model"form.serviceTime"type"date"class"fill-w mar-t-xs"value-format"yyyy-MM-dd HH:mm:ss"placeholder"请选择日期&quo…...

普源(RIGOL) DHO914S示波器 简单开箱评测

普源精电(RIGOL) DHO914S 12bit数字示波器 简单开箱评测。 旧的示波器感觉不好用&#xff0c;所以换个新的&#xff0c;看中了普源的这款&#xff0c;主要看中它便携支持PD供电&#xff0c;还有伯德图功能&#xff0c;以及12bit的垂直分辨率。如果你对我上面说的点没需求&…...

docker 安装Oracle19c

一、下载镜像 docker pull registry.cn-hangzhou.aliyuncs.com/zhuyijun/oracle:19c通过docker images 命令查看 如下图&#xff1a;已经有oracle 19c镜像。 二、创建挂载文件 # 创建文件 mkdir -p /home/data/oracle/oradata# 授权&#xff0c;不授权会导致后面安装失败 c…...

qt-OPENGL-星系仿真

qt-OPENGL-星系仿真 一、演示效果二、核心程序三、下载链接 一、演示效果 二、核心程序 #include "model.h"Model::Model(QOpenGLWidget *_glWidget) { glWidget _glWidget;glWidget->makeCurrent();initializeOpenGLFunctions(); }Model::~Model() {destroyV…...

Java实战:Spring Boot实现AOP记录操作日志

本文将详细介绍如何在Spring Boot应用程序中使用Aspect Oriented Programming&#xff08;AOP&#xff09;来实现记录操作日志的功能。我们将探讨Spring Boot集成AOP的基本概念&#xff0c;以及如何使用Spring Boot实现AOP记录操作日志。最后&#xff0c;我们将通过一个具体示例…...

C++ //练习 7.38 有些情况下我们希望提供cin作为接受istream参数的构造函数的默认实参,请声明这样的构造函数。

C Primer&#xff08;第5版&#xff09; 练习 7.38 练习 7.38 有些情况下我们希望提供cin作为接受istream&参数的构造函数的默认实参&#xff0c;请声明这样的构造函数。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 Sa…...