Java中Arrays工具类的一些常见方法总结
作者:cph_507
前言
在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));
总结
到此这篇关于Java中Arrays工具类的一些常见方法总结的文章就介绍到这了,更多相关Java Arrays工具类方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!