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

时间:2010-01-30 21:40:30

标签: 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;
}

2 个答案:

答案 0 :(得分:5)

如果您拥有clone(),则可以将内部替换为

System.arraycopy( in[i], 0, ret[i], 0, in[0].length );

但是,由于你在最里面的循环中创建了一个新对象,我没有看到任何其他方法。

答案 1 :(得分:0)

也许apache commons库包含类ArrayUtils可以帮助你,但我注意到如果这个语句有效你可能会遇到IndexOutOfBoundException:

1。长度||在[2] .length || in [n-1] .length)&lt;在[0] .length

P.S。我知道这个语句在语法上不正确,但它让你了解问题;)