如何在 java 中硬拷贝 List<List<>>?
How to hard copy List<List<>> in java?
public static void main(String[] args) {
List<List<Integer>> ll1 = new ArrayList<List<Integer>>();
ll1.add(new ArrayList<Integer>(1));
System.out.println(ll1.get(0));
//hard copy don't work
List<List<Integer>> ll2 = new ArrayList<List<Integer>>(ll1);
System.out.println(ll2.get(0) == ll1.get(0));
}
除了用for循环硬拷贝每一个内链表,还有没有别的办法硬拷贝。
你能解释一下 List<List<Integer>> ll2 = new ArrayList<List<Integer>>(ll1);
是如何工作的以及为什么会失败吗?
您还需要复制内部列表:
private List<List<Integer>> copy(List<List<Integer>> toCopy) {
List<List<Integer>> copy = new ArrayList<>(toCopy.size());
for(List<Integer> inner : toCopy) {
copy.add(new ArrayList<Integer>(inner));
}
return copy;
}
public static void main(String[] args) {
List<List<Integer>> ll1 = new ArrayList<List<Integer>>();
ll1.add(new ArrayList<Integer>(1));
System.out.println(ll1.get(0));
//hard copy don't work
List<List<Integer>> ll2 = new ArrayList<List<Integer>>(ll1);
System.out.println(ll2.get(0) == ll1.get(0));
}
除了用for循环硬拷贝每一个内链表,还有没有别的办法硬拷贝。
你能解释一下 List<List<Integer>> ll2 = new ArrayList<List<Integer>>(ll1);
是如何工作的以及为什么会失败吗?
您还需要复制内部列表:
private List<List<Integer>> copy(List<List<Integer>> toCopy) {
List<List<Integer>> copy = new ArrayList<>(toCopy.size());
for(List<Integer> inner : toCopy) {
copy.add(new ArrayList<Integer>(inner));
}
return copy;
}