如何使用System.arraycopy优化此方法?

xkd*_*dxc 0 java arrays

编写此方法的更有效方法是什么:

static Foo[][] copy2D(Foo[][] in)
{
    Foo[][] ret = new Foo[in.length][in[0].length];
    for(int i = 0;i < in.length;i++) {
        for(int j = 0;j < in[0].length;j++) {
            ret[i][j] = in[i][j].clone();
        }
    }
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

Syn*_*r0r 5

如果你是不是有克隆(),你可以更换内部搭配:

System.arraycopy( in[i], 0, ret[i], 0, in[0].length );
Run Code Online (Sandbox Code Playgroud)

但是因为你在最里面的循环中创建了一个新对象,所以我没有看到任何其他方法.