从一个数组复制到另一个数组的最佳方式

19

我运行以下代码时,没有复制任何内容 - 我做错了什么?

此外,这是从一个数组复制数据到另一个数组的最佳/最有效的方法吗?

public class A {
    public static void main(String args[]) {
        int a[] = { 1, 2, 3, 4, 5, 6 };
        int b[] = new int[a.length];

        for (int i = 0; i < a.length; i++) {
            a[i] = b[i];
        }
    }
}

你看到了什么问题?你的代码看起来很好(你是在寻找System.arraycopy()吗?) - rsp
1
@Mimi,@rsp - 他的代码里有个bug! - Ted Hopp
3个回答

93

有很多解决方案:

b = Arrays.copyOf(a, a.length);

创建一个新的数组,将a的元素复制到新数组中,并返回该新数组。

或者

b = new int[a.length];
System.arraycopy(a, 0, b, 0, b.length);

这个方法将源数组的内容复制到一个由您自己分配的目标数组中。

或者

b = a.clone();

这个函数很像Arrays.copyOf()。查看此线程

如果在循环中改变赋值的方向,你发布的那个函数也可以用:

b[i] = a[i]; // NOT a[i] = b[i];

20

我认为你的任务是反过来的:

a[i] = b[i];

应该改为:

b[i] = a[i];


8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接