Java对数组的支持(java.util.Arrays.sort/System.arraycopy和java.util.Arrays.copyOf区别)

数组排序
java.util.Arrays.sort(数组名称 ); 支持所有类型的数组

public class ArrayDemo{
    public static void main(String[] args) {
        int[] intData = new int[]{1,65,55,23,100} ;
        char[] charData = new char[]{'z','a','c','b'} ;
        java.util.Arrays.sort(intData) ;
        java.util.Arrays.sort(charData) ;
        Arrays.sort(intData);  //假如导入import java.util.Arrays
        printArray(intData) ;
        printArray(charData) ;
    }
    public static void printArray(int[] temp) {
        for (int i = 0 ; i<temp.length ; i++) {
            System.out.println(temp[i]) ;
        }
        System.out.println() ;
    }
    // 重载
    public static void printArray(char[] temp) {
        for (int i = 0 ; i<temp.length ; i++) {
            System.out.println(temp[i]) ;
        }
        System.out.println() ;
    }
}

如果import java.util.Arrays; ->直接是Array.sort(数组名称)。排序内部使用双轴快速排序(双轴快排是优化过的)。

数组的部分拷贝
指的是将一个数组的部分内容替换成另一个数组的部分内容(必须是连续的)。
System.arraycopy(源数组名称,源数组开始点,目标数组开始点,拷贝长度)
目标数组A:1、2、3、4、5、6、7、8、9
源数组B:11、22、33、44、55、66、77、88、99
替换后:1、55、66、77、5、6、7、8、9
代码如下:

public class ArrayDemo{
    public static void main(String[] args) {
        int[] dataA = new int[]{1,2,3,4,5,6,7,8,9} ;
        int[] dataB = new int[]{11,22,33,44,55,66,77,88,99} ;
        System.arraycopy(dataB,4,dataA,1,3) ;
        printArray(dataA) ;
    }
    public static void printArray(int[] temp) {
        for (int i = 0 ; i<temp.length ; i++) {
            System.out.println(temp[i]) ;
        }
        System.out.println() ;
    }
}

数组全拷贝 —>java 动态数组动态扩容方法
java.util.Arrays.copyOf(数组名称,新数组长度);

import java.util.Arrays;
public class ArrayDemo
{
    public static void main(String[] args)
    {
       int[] a=new int[]{1,2,3,4,5};
       int[] copy=Arrays.copyOf(a,10);  //a是原数组,10是新数组copy的长度
       for(int num:copy)
       {
           System.out.print(num+"、"); //1、2、3、4、5、0、0、0、0、0、
       }
    }
}

对于java.util.Arrays.copyof 只能从下标0开始。
System.arraycopy和java.util.Arrays.copyof区别:
Arrays.copyOf( )不只是拷贝原数组元素,也在内部创建了一个长度为newlenth的新数组,返回新数组。
而System.arraycopy需要目标数组,将原数组拷贝到你自定义的数组里,而且可以选择拷贝的起点和长度以及放入新数组中的位置。
其实在底层里Arrays.copyOf( )调用了System.arraycopy( )将原数组内容复制到新数组中。
以上介绍的三种方法均为静态方法。

猜你喜欢

转载自blog.csdn.net/sophia__yu/article/details/83661291