如何在 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;
}