Java中Arrays工具类的一些常见方法总结

 更新时间:2024年02月27日 09:26:11   作者:cph_507  
在Java中Arrays类是一个实用工具类,用于在数组上执行各种操作,包括排序、搜索、比较等,这篇文章主要给大家介绍了关于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));

总结 

到此这篇关于Java中Arrays工具类的一些常见方法总结的文章就介绍到这了,更多相关Java Arrays工具类方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis-plus使用xml自定义sql语句方式

    mybatis-plus使用xml自定义sql语句方式

    这篇文章主要介绍了mybatis-plus使用xml自定义sql语句方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 一文掌握maven  filtering标签

    一文掌握maven  filtering标签

    这篇文章主要介绍了maven  filtering标签,本文通过三种方法给大家讲解maven filtering标签,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • SpringBoot应用的接口访问从HTTP改为HTTPS

    SpringBoot应用的接口访问从HTTP改为HTTPS

    本文主要介绍了SpringBoot应用的接口访问从HTTP改为HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 详解mybatis中的if-else的嵌套使用

    详解mybatis中的if-else的嵌套使用

    本文主要介绍了mybatis中的if-else的嵌套使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • java数据类型与变量的安全性介绍

    java数据类型与变量的安全性介绍

    这篇文章主要介绍了java数据类型与变量的安全性介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • Mybatis逆向工程时失败问题及解决

    Mybatis逆向工程时失败问题及解决

    这篇文章主要介绍了Mybatis逆向工程时失败问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 一文带你深入了解Java String的不可变性

    一文带你深入了解Java String的不可变性

    这篇文章主要来和大家一起深入探讨一下Java String中的不可变性,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • Java集合中的LinkedHashMap使用解析

    Java集合中的LinkedHashMap使用解析

    这篇文章主要介绍了Java集合中的LinkedHashMap使用解析,LinkedHashMap是继承于HashMap的,所以它的很多属性和方法都是HashMap中的,那么它是怎么实现有序存储的呢,需要的朋友可以参考下
    2023-12-12
  • java中CompleteFuture与Future的区别小结

    java中CompleteFuture与Future的区别小结

    本文主要介绍了java中CompleteFuture与Future的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • maven中resource配置的实现示例

    maven中resource配置的实现示例

    我们在使用Maven组件来构建项目的时候,通常将配置文件放在资源文件目录下,本文主要介绍了maven中resource配置的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论