• Arrays工具类的常见方法总结


    一、Arrays.asList()

    作用:将一个指定类型的参数或是数组以List类型返回

    参数:观察源码可知为一个泛型动态参数或是一个泛型数组(必须为引用类型的数组) 

    返回值:一个list列表

     源码:

    举例: 

    1. public class Test12 {
    2. public static void main(String[] args) {
    3. Integer[] arr = new Integer[] {1,2,3,4,5,6};
    4. List list1 = Arrays.asList(arr);
    5. List list2 = Arrays.asList("a","s","d","f");
    6. System.out.println(list1);
    7. System.out.println(list2);
    8. }
    9. }

    运行结果:

    1. [1, 2, 3, 4, 5, 6]
    2. [a, s, d, f]

    二、Arrays.binarySearch( )

    作用:对已经排序的数组进行二分查找

    参数:一个泛型数组和一个泛型元素

    返回值:为int类型

     源码: 

     这里binarySearch()方法返回了一个binarySearch0()参数表示一个数组a,从下标位置0开始到数组尾部,key为目标值

    可以看出 binarySearch0()方法就是一个二分查找算法

    若是存在目标元素key则返回mid,不存在则返回-(low+1)

    举例:  

    1. int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
    2. int ret = Arrays.binarySearch(num, 4);
    3. System.out.println(ret); //目标元素4的下标位置为3

    三、Arrays.copyOf( )

    作用:复制一个数组,并且可以指定新数组的长度

    参数:一个泛型数组(原数组对象)和一个整型元素(新数组长度)

    返回值:一个泛型数组

     源码: 

     

     创建了一个和原数组相同类型的数组,然后调用了System.arraycopy()方法,最后返回目标数组

    举例:  

    1. int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
    2. int[] num1 = Arrays.copyOf(num,num.length+1);
    3. System.out.println(Arrays.toString(num1)); //[1, 2, 3, 4, 5, 6, 0]
    4. System.out.println(Arrays.toString(num)); //[1, 2, 3, 4, 5, 6]

    四、Arrays.copyOfRange( )

    作用:复制一个数组中指定范围的元素

    参数:一个泛型数组(原数组对象)和两个整型元素(从下标位置为from到to的位置)

    返回值:一个泛型数组

     源码: 

     先判断所选定下标范围是否小于0,若是小于0则抛出异常IllegalArgumentException;若是大于0,则创建一个和所选下标范围长度相同的数组,然后调用System.arraycopy()方法,最后返回所创建的数组。

    举例:  

    1. int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
    2. int[] num1 = Arrays.copyOfRange(num, 2, 4); //截取下标[2,4)的范围并复制
    3. System.out.println(Arrays.toString(num1)); //[3, 4]
    4. System.out.println(Arrays.toString(num)); //[1, 2, 3, 4, 5, 6]

    五、Arrays.fill( )

    作用:将数组中的所有元素都设为指定的值

    参数:一个泛型数组(原数组对象)和一个泛型元素

    返回值:voi

     源码: 

     

     通过遍历目标数组,将数组中的每个元素赋值为指定的值

    举例:  

    1. int[] num = new int[] { 1, 2, 3, 4, 5, 6 };
    2. Arrays.fill(num, 0);
    3. System.out.println(Arrays.toString(num)); //[0, 0, 0, 0, 0, 0]

    六、Arrays.sort( )

    作用:对数组中的元素进行排序(默认为升序)

    参数:一个泛型数组

    返回值:void

     源码:

    通过传入一个数组,然后调用DualPivotQuicksort类的sort()方法(原理是快速排序)

    举例: 

    1. int[] num = new int[] { 5, 2, 9, 45, 3, 6 };
    2. Arrays.sort(num);
    3. System.out.println(Arrays.toString(num)); //[2, 3, 5, 6, 9, 45]

     

    七、Arrays.toString( )

    作用:将数组转化为字符串

    参数:一个泛型数组

    返回值:一个字符串

     源码:

     先判断传入的数组是否为空,定义一个iMax以确定数组结束的位置,判断iMax是否为正数;然后创建一个StringBuilder对象,这里使用StringBuilder是因为 String类型的值一旦确定就不可变,而且每次对String进行操作时,都会生成新的对象,效率低,占用大量的内存,而在对StringBuffer进行操作时,不会生成新的对象,不会占用大量内存(默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象);最后对每个字符进行拼接操作。

    举例:

    1. int[] num ={ 5, 2, 9, 45, 3, 6 };
    2. System.out.println(Arrays.toString(num));
    3. //[5, 2, 9, 45, 3, 6]

  • 相关阅读:
    【UML】浅谈为什么要有UML?
    MySQL锁,锁的到底是什么?
    Redis集群数据迁移:redis-rdb-tools离线安装以及使用
    Redis学习笔记整理_01
    关于windows的文件监控管理系统(Java)
    2022年中国电动汽车公共充电服务市场发展研究报告
    DLL注入——使用远程线程
    【环境】Linux下Anaconda/ Miniconda安装+百度Paddle环境搭建+Cudnn(3090显卡+CUDA11.8+cudnn8.6.0)
    中国交通标志牌数据集TT1OOK中的类别ID及其图标罗列以及含义详细介绍
    ConvMAE(2022-05)
  • 原文地址:https://blog.csdn.net/disper1110/article/details/136234173