ram*_*rur -1 java clone list arraylist deep-copy
我正在尝试编写一个程序来执行 的深拷贝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 ;
}
Run Code Online (Sandbox Code Playgroud)
这是一个好方法吗?是否有可能摆脱内循环?事实上,每个内部子列表都可以增长到很大的长度。
这是一个好方法吗?
没关系。
是否有可能摆脱内循环?
是的,您可以使用ArrayList复制构造函数:
for( List<Integer> sublist : src) {
dest.add(new ArrayList<>(sublist));
}
Run Code Online (Sandbox Code Playgroud)
事实上,每个内部子列表都可以增长到很大的长度。
以上将缩短代码,并将其委托给System.arraycopy,这可能会在一定程度上提高性能。它还可以避免在填充空的ArrayList. 但是,如果您确实需要深度复制,则从根本上无法避免复制列表/数组的 O(n) 时间复杂度。既然你没有解释为什么你需要一个深拷贝,我就不得不相信你的话。
| 归档时间: |
|
| 查看次数: |
4096 次 |
| 最近记录: |