Java数组拷贝与反转的快捷方法

前言:在 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();
  1. 定义一个数组 arr,数组元素为 1, 2, 3, 4, 5

  2. 使用 IntStream.of(arr) 将数组 arr 转换为整数流。

  3. 使用 .boxed() 方法将整数流转换为对象流,方便后续的操作。

  4. 使用 .collect(Collectors.toList()) 方法将对象流转换为一个列表 list

  5. 使用 Collections.reverse(list) 将列表 list 反转。

  6. 最后,使用 .stream().mapToInt(i->i).toArray() 将列表 list 转换回数组,并将其赋值给 arr

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值