java中复制数组的不同方法

qvtsj1bj  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(343)

关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,更新这个问题,以便用事实和引文来回答。

五小时前关门了。
改进这个问题
我正在复习这个由我的学校提供的关于it实践的问题。好吧,我几周前毕业了,在上leetcode之前,我正在浏览这个网站。
无论如何,这种方法 swapAll 使作为参数传递的两个数组相互复制。
对于那些看问题有困难的人,

Write a method named swapAll that accepts two arrays of integers as parameters and swaps their entire contents. 
You may assume that the arrays passed are not null and are the same length.

For example, if the following arrays are passed:

int[] a1 = {11, 42, -5, 27, 0, 89};
int[] a2 = {10, 20, 30, 40, 50, 60};
swapAll(a1, a2);

After the call, the arrays should store the following elements:

a1: {10, 20, 30, 40, 50, 60}
a2: {11, 42, -5, 27, 0, 89}

我实际上找到了两种解决这个问题的方法

public static void swapAll(int[] a, int[] b) {
    int[] c = new int[a.length];
    for (int i = 0; i < a.length; i++) {
        c[i] = a[i];
        a[i] = b[i];
        b[i] = c[i];
    }
}

public static void swapAll(int[] a, int[] b) {
    int[] c = new int[a.length];
    System.arraycopy(a, 0, c, 0, a.length);
    System.arraycopy(b, 0, a, 0, a.length);
    System.arraycopy(c, 0, b, 0, a.length);
}

但我想知道是否有一种方法在运行时/内存等方面具有优势,是否有一种方法更可取?

hgb9j2n6

hgb9j2n61#

我更喜欢另一种选择。一种不需要创建整个不必要的临时数组的方法。基本上,第一种方法只是使用一个临时的 int 而不是数组。大概,

public static void swapAll(int[] a, int[] b) {
    for (int i = 0; i < a.length; i++) {
        int t = a[i];
        a[i] = b[i];
        b[i] = t;
    }
}

相关问题