Java中的Clear是否会导致空结果?

Java中的Clear是否会导致空结果?,java,arrays,list,Java,Arrays,List,我想练习java的“Clear”实用程序。但是,当我使用clear时,即使在将子列表值添加到超级列表之后,这些值也会以某种方式被覆盖为null。这种行为的原因是什么 public static void main(String [] args) { List<Integer> abc= new LinkedList<>(); List<List<Integer>> abc2= new LinkedLi

我想练习java的“Clear”实用程序。但是,当我使用clear时,即使在将子列表值添加到超级列表之后,这些值也会以某种方式被覆盖为null。这种行为的原因是什么

    public static void main(String [] args)
    {
        List<Integer> abc= new LinkedList<>();
        List<List<Integer>> abc2= new LinkedList<>();
        int j=2;
        while(j > 0) {
            for (int i = 1; i < 4; i++) {
                abc.add(i);
            }
            //abc.stream().forEach(e-> System.out.println(e));
            abc2.add(abc);
            abc.clear();
            //abc= new LinkedList<>();
            j--;
        }

        abc2.stream().forEach(e-> System.out.println("," + e));
    }
}
publicstaticvoidmain(字符串[]args)
{
列表abc=新链接列表();
List abc2=新链接列表();
int j=2;
而(j>0){
对于(int i=1;i<4;i++){
abc.add(i);
}
//abc.stream().forEach(e->System.out.println(e));
abc2.add(abc);
abc.clear();
//abc=新链接列表();
j--;
}
abc2.stream().forEach(e->System.out.println(“,”+e));
}
}
为什么我会得到以下结果:

,[],[]

而不是:

,[1,2,3]
,[1,2,3]

abc2
多次包含相同的列表,
abc
<代码>abc为空,因为您清除了它。在清除之前,我已将其添加到主列表中。保留abc2列表是否有价值?否,
abc2
中的列表与
abc
中的列表相同。所以如果你清除它,它是空的。简单地说,你是通过引用
abc
传递的。这是因为Java通过引用对象进行传递。因此,当您清除
abc
时,它将从
abc2
中清除。