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方法。