前言:在 Java 中,有很多种方法可以实现数组的复制和反转。
1、数组的拷贝(复制)
(1)可以使用.clone ()方法:
int[] arr5 = {1,3,4,5};
int[] arr6 = arr5.clone();
System.out.println(Arrays.toString(arr6));
(2)可以使用 System.arraycopy
方法,该方法可以将一个数组的一个子数组复制到另一个数组中,语法如下:
System.arraycopy(src, srcPos, dest, destPos, length);
System.arraycopy
方法是 Java 中的一个静态方法,它的作用是从一个源数组复制元素到另一个目标数组。该方法有五个参数:
src
:源数组srcPos
:源数组的起始位置dest
:目标数组destPos
:目标数组的起始位置length
:要复制的元素数量
例如,若要将源数组 src
中从位置 2
开始的 3
个元素复制到目标数组 dest
中从位置 1
开始,可以使用如下代码:
int[] src = new int[]{0, 1, 2, 3, 4};
int[] dest = new int[src.length];
System.arraycopy(src, 2, dest, 1, 3);
此时,目标数组 dest
的值为:
[0, 2, 3, 4, 0]
(3)使用 Arrays.copyOf
方法,该方法可以将一个数组复制到另一个数组中,语法如下:
int[] dest = Arrays.copyOf(src, src.length);
例如:
int[] arr1 = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf( arr1,arr1.length);
System.out.println(Arrays.toString(arr2));
当你直接输出一个数组时,实际上是调用了该数组的默认 toString
方法,该方法返回的是数组的地址,而不是数组中的元素,若要输出数组中的元素,你可以使用 Arrays.toString
方法。
2、数组的反转
(1)可以使用循环语句手动反转数组,例如:
int[] arr = new int[]{1, 2, 3, 4, 5};
for (int i = 0; i < arr.length / 2; i++) {
int temp = arr[i];
arr[i] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
(2)可以使用 Apache Commons Lang 库的 ArrayUtils.reverse(arr)
方法:
import org.apache.commons.lang3.ArrayUtils;
int[] arr = new int[]{1, 2, 3, 4, 5};
ArrayUtils.reverse(arr);
(3)反转数组还可以使用 Collections.reverse
方法,该方法可以将数组中的元素反转,语法如下:
int[] arr = new int[]{1, 2, 3, 4, 5};
List<Integer> list = IntStream.of(arr).boxed().collect(Collectors.toList());
Collections.reverse(list);
arr = list.stream().mapToInt(i->i).toArray();
-
定义一个数组
arr
,数组元素为1, 2, 3, 4, 5
。 -
使用
IntStream.of(arr)
将数组arr
转换为整数流。 -
使用
.boxed()
方法将整数流转换为对象流,方便后续的操作。 -
使用
.collect(Collectors.toList())
方法将对象流转换为一个列表list
。 -
使用
Collections.reverse(list)
将列表list
反转。 -
最后,使用
.stream().mapToInt(i->i).toArray()
将列表list
转换回数组,并将其赋值给arr
。