Java如何克隆数组变量?

您有一个数组变量,并且想要将此数组的副本克隆为新的数组变量。为此,您可以使用Apache Commons LangArrayUtils.clone()方法。下面的代码段演示了一个基本数组的克隆,该数组中包含一些整数元素。

package org.nhooo.example.commons.lang;

import org.apache.commons.lang3.ArrayUtils;

public class PrimitiveArrayClone {
    public static void main(String[] args) {
        int[] fibonacci = new int[] {1, 1, 2, 3, 5, 8, 13, 21, 34, 55};
        System.out.println("fibonacci = " + ArrayUtils.toString(fibonacci));

        int[] clone = ArrayUtils.clone(fibonacci);
        System.out.println("clone = " + ArrayUtils.toString(clone));
    }
}

将fibonacci数组内容克隆到clone数组中,然后使用ArrayUtils.toString()方法将其打印出来。

fibonacci = {1,1,2,3,5,8,13,21,34,55}
clone = {1,1,2,3,5,8,13,21,34,55}

在 clone ()方法上面的代码片段中,创建对新数组的引用。它自己的 clone ()方法不更改原始数组。除了克隆原始数组外,clone ()方法还可以克隆对象数组。

作为示例,我们将创建一个String对象数组并使用ArrayUtils.clone()方法克隆它。为了显示数组的内容,我们将再次使用该ArrayUtils.toString()方法。

package org.nhooo.example.commons.lang;

import org.apache.commons.lang3.ArrayUtils;

public class ObjectArrayClone {
    public static void main(String[] args) {
        String[] colors = new String[] {"Red", "Green", "Blue", "Yellow"};
        System.out.println("colors = " + ArrayUtils.toString(colors));

        String[] clone = ArrayUtils.clone(colors);
        System.out.println("clone = " + ArrayUtils.toString(clone));
    }
}

结果如下:

colors = {Red,Green,Blue,Yellow}
clone = {Red,Green,Blue,Yellow}

唯一的来自不同克隆的基本数组时以及使用该对象阵列ArrayUtils.clone()方法是克隆的对象,例如当String,Date等我们需要转换的结果clone()的方法到目标对象类型。

Maven依赖

<!-- https://search.maven.org/remotecontent?filepath=org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

Maven中央