Arrays.Copy和System.arraycopy的使用

Arrays.copy的使用:
        /**
         * 第一个参数为源数组
         * 第二参数为目标数组的长度
         */
        array = Arrays.copyOf(array, array.length - 1);
System.arraycopy的使用:
        /**
         * 表示从src中从srcPos到srcPos+length-1的位置截取出来复制到dest中的destPos到destPos+length-1
         * 第一个参数为源数组src
         * 第二参数为源数组开始截取的位置srcPos,从srcPos到(srcPos + length -1)
         * 第三个参数为目标数组dest
         * 第四个参数为目标数组开始接收的位置destPos
         * 第五个参数为截取的长度length
         */
        System.arraycopy(array, index + 1, array, index, array.length - index - 1);
        

测试:

    public static void main(String[] args) {
        //数组的拷贝
        int[] array = {1, 2, 3, 4, 5, 6};
        System.out.println("Before removeByFor:");
        printArray(array);

        array = removeByFor(array, 2);
        System.out.println("After removeByFor:");
        printArray(array);

        System.out.println("Before removeByCopy:");
        printArray(array);
        array = removeByCopy(array, 2);
        System.out.println("After removeByCopy:");
        printArray(array);

    }

    public static int[] removeByFor(int[] array, int index) {
        if (index < 0 || index > array.length)
            throw new IndexOutOfBoundsException();
        for (int i = index; i < array.length - 1; i++) {
            array[i] = array[i + 1];
        }
        /**
         * 第一个参数为源数组
         * 第二参数为目标数组的长度
         */
        array = Arrays.copyOf(array, array.length - 1);
        return array;
    }

    public static int[] removeByCopy(int[] array, int index) {
        if (index < 0 || index > array.length)
            throw new IndexOutOfBoundsException();
        /**
         * 表示从src中从srcPos到srcPos+length-1的位置截取出来复制到dest中的destPos到destPos+length-1
         * 第一个参数为源数组src
         * 第二参数为源数组开始截取的位置srcPos,从srcPos到(srcPos + length -1)
         * 第三个参数为目标数组dest
         * 第四个参数为目标数组开始接收的位置destPos
         * 第五个参数为截取的长度length
         */
        System.arraycopy(array, index + 1, array, index, array.length - index - 1);
        array = Arrays.copyOf(array, array.length - 1);
        return array;
    }

    public static void printArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println();
    }

测试结果:
Before removeByFor:
1 2 3 4 5 6 
After removeByFor:
1 2 4 5 6 
Before removeByCopy:
1 2 4 5 6 
After removeByCopy:
1 2 5 6 
建议:

进行数组拷贝时,可以直接使用Arrays.copy方法,对于要删除或添加数组中的元素再返回新的数组,可以使用System.arraycopy方法。

你可能感兴趣的:(Arrays.Copy和System.arraycopy的使用)