ArrayList<ArrayList<Integer>> aal=new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> al= new ArrayList<Integer>();
for(int i=2;i<6;i++)
{
al.add(i);
if(i%2!=0)
{
aal.add(al);
al.clear();
}
}
输出:[[4,5][4,5]]
所需输出:[[2,3][4,5]]
最佳答案
al.clear()
还将清除您刚刚放入 aal
的数组列表的内容。这是因为aal
中的数组列表以及 al
引用的那个是相同数组列表。您可以通过以下两种方法来解决此问题。
添加到
aal
后创建一个新的数组列表:for(int i=2;i<6;i++) { al.add(i); if(i%2!=0) { aal.add(al); al = new ArrayList<>(); } }
添加
al
的副本至aal
(这可能是您期望代码执行的操作):for(int i=2;i<6;i++) { al.add(i); if(i%2!=0) { aal.add(new ArrayList<>(al)); al.clear(); } }
请注意,在这两种情况下,我都使用 new ArrayList<>
创建新的数组列表。 .
关于java - 在ArrayList的ArrayList中,如何在更新内部数组时保留父数组列表中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58111019/