Java中【Arrays工具类的常见方法总结】

在Java中,Arrays类是一个实现对数组操作的工具类,包括了各种各样的静态方法,可以实现数组的排序和查找、数组的比较和对数组增加元素,数组的复制和将数组转换成字符串等功能。这些方法都有对所有基本类型的重载方法。

基本的常用方法包括;

1.Arrays.asList()         

观察源码可知:此方法内部的参数:为一个动态参数或者一个数组(必须为引用类型,因为返回的列表内部不能为基本数据类型),即一组相同类型的值

作用:将一组相同类型的参数或者数组,以List(列表)的类型返回,

转化原因(使用场景):因为数组大小固定,不易更改,可通过转化列表,通过具体的列表形式操作

例子;

2.Arrays.binarySearch():使用前提,必须在有序数组中

通过快捷输入可了解到,此方法在Arrays类中是重载的,不同的参数(参数的类型,个数),适用于不同的场景。

此方法的作用:通过二分查找在 “有序数组”中查找目标值。返回目标值在数组中的下标,若未查找到,返回一个小于0的数。

以常用方法:举例

参数:  (数组名称,目标值)

参数:(数组名称,查找范围的初始索引,查找范围的末端索引,目标值)


		int[] array = {1,2,3,4,5,6,7,8,9};
		int index = Arrays.binarySearch(array , 8);
		System.out.println(index);
int[] array = {1,2,3,4,5,6,7,8,9};
		int  index = Arrays.binarySearch(array, 5,array.length,8);
		System.out.println(index);

观察其内部源代码可知:

其内部设有一个二分查找的private私有的算法,不过不同的参数传入,最终都是利用该二分查找算法返回目标值的下标

3.Arrays.copyOf()

同理:通过快捷输入可了解到,此方法在Arrays类中是重载的,不同的参数(参数的类型,个数),适用于不同的场景。

主要作用;对目标数组复制,从头开始复制长度为n个元素

参数:(目标数组名称,需复制的长度)

观察源码:通常创建一个长度为复制长度的新数组,再通过System类提供的arrayCopy方法复制到新数组,再返回出去。

例子:

int[] array = {1,2,3,4,5,6,7,8,9};
		int[] arr = Arrays.copyOf(array, 1);
		int[] arr1 = Arrays.copyOf(array, 5);
		int[] arr2 = Arrays.copyOf(array, 8);
		System.out.println(Arrays.toString(arr));
		System.out.println(Arrays.toString(arr1));
		System.out.println(Arrays.toString(arr2));	

4.Arrays.copyOfRange()

同理:通过快捷输入可了解到,此方法在Arrays类中是重载的,不同的参数(参数的类型,个数),适用于不同的场景。

主要作用:对目标数组复制,某个区间

参数(目标数组名称,开始复制下标,结束下标(不包含结束下标位置元素))

观察源码:在调用该方法后,先判断结束下标是否大于初始下标,若小于,则抛出下标错误异常(初始下标>结束小标),

若下标正常,结束下标-初始下标即复制后的新数组长度,创建新数组,使用System.arrcopy()方法复制,再返回出去。

例子:

int[] array = {1,2,3,4,5,6,7,8,9};
int[] arr = Arrays.copyOfRange(array, 3, 7);
int[] arr1 = Arrays.copyOfRange(array, 1, 5);
int[] arr2 = Arrays.copyOfRange(array, 2, 9);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));	

5.Arrays.fill()

同理:通过快捷输入可了解到,此方法在Arrays类中是重载的,不同的参数(参数的类型,个数),适用于不同的场景。

主要作用:填充数组,

参数:(数组名称,填充元素)

           (数组名称,填充区间的初始下标,填充区间的结束下标,填充元素)

观察源码:

两个参数的源码:由源码可知,此静态方法是通过传参后,利用for循环将其所有值改变

区间填充:四个参数的源码,此静态方法再传参后,先根据数组的长度检查,区间的初始下标以及结束下标是否合理,如果合理,通过for循环进行改变元素值,否则抛出下标异常

例子:

        int[] nums = {1,2,3,3,5,6,7};
		
		Arrays.fill(nums,-1);//数组全部填充覆盖
		System.out.println(Arrays.toString(nums));
		Arrays.fill(nums, 1,5,9);//数组区间填充覆盖
		System.out.println(Arrays.toString(nums));
		

6.Arrays.sort():此方法再Arrays类中也是重载。

主要作用:可对各种类型的数组排序

参数(数组名称)

        (数组名称,比较器的内部类(自定义比较规则))

观察源码

例子:

基本类型数组


		int[] nums = {99,8,3,3,34,6,7};
		Arrays.sort(nums);//对基本类型数组排序

自定义比较引用类型数组

7.Arrays.toString()

主要作用:快速打印一维数组所有元素

参数(数组名称)

观察源码:通过检查是否为空,不为空,检查数组长度,若为0,则返回字符串"[]",若大于0,则创建可变字符串StringBuilder,通过尾部追加双引号,中括号,及数组元素,并输出这个可变字符串

例子

	int[] nums = {99,8,3,3,34,6,7};
		System.out.println(Arrays.toString(nums));
		

  • 41
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cph_507

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值