当我清除我在[Java]中添加的临时列表时列表中的列表成为空

Har*_*uki 1 java list arraylist

java.util.List<java.util.List<String>> statuses = new java.util.ArrayList<>();
java.util.List<String> temp = new java.util.ArrayList<>();

System.out.println("yoi :" + temp.size());
statuses.add(temp);
System.out.println("warui :" + statuses.get(0).size());
temp.clear();
System.out.println("kirai :" + statuses.get(0).size());
Run Code Online (Sandbox Code Playgroud)

控制台输出:

yoi :31
warui :31
kirai :0
Run Code Online (Sandbox Code Playgroud)

当我清除我曾经插入的临时列表时,为什么在其他列表中的地球列表中为空?

Era*_*ran 5

要添加参照List你的statuses List,这意味着statuses持有相同的参考List通过引用temp.

您应该temp在将其添加到以下内容之前创建副本List:

statuses.add(new ArrayList<>(temp));
Run Code Online (Sandbox Code Playgroud)

现在清算temp不会影响statuses.