我正在努力编写一个过程来深度复制 List<List<Integer>>
,我的做法如下:
public static List<List<Integer>> clone(final List<List<Integer>> src)
{
List<List<Integer>> dest = new ArrayList<List<Integer>>();
for( List<Integer> sublist : src) {
List<Integer> temp = new ArrayList<Integer>();
for(Integer val: sublist) {
temp.add(val);
}
dest.add(temp);
}
return dest ;
}
这样做好吗?有没有可能摆脱内部循环?事实是,每个内部子列表都可以增长到很大的长度。
memcpy
,而这在Java中的目的甚至不清楚。 - MakotoList<List<Integer>>
,它们具有完全相同的值,但每个结构都有不同的哈希码。这样我就可以区分它们。我将在不同的地方多次调用上面的clone()
过程。 - ramgorurmemcpy
只是因为在C语言中,它通常比手动迭代和复制更快,而不是因为memcpy
具有任何语义价值。他/她实际上是在问“我是否以尽可能高效的方式进行了深度复制?” - Oliver Charlesworthmemcpy
。请查看我的更新答案。 - shmosel