我正在尝试创建一个 ArrayList 的 ArrayList。我想创建 25 个 ArrayList 并让这些 ArrayList 保存不同的值。目标是按字长创建排序字典。
我的代码看起来像
for(int i = 0; i < 25; i++)
list2D.add(list);
for(int i = 0; i < stringList; i++)
list2D.get(stringList.get(i).length()).add(stringList.get(i))
问题是每个列表在完成后都包含相同的值。
我知道为什么会出现问题。“list”是一个 ArrayList,ArrayList 是对象,如果您编辑一个对象,那么包含该对象的所有内容都将被编辑。
为了解决我尝试过的问题
for(int i = 0; i < 25; i++){
list = new ArrayList<String>();
for(int i2 = 0; i2 < stringList.size(); i2++){
if(stringList.get(i).length() == i)
list.add(stringList.get(i2));
}
list2D.add(list);
}
但是当我测试我的“list2D”时
for(int i = 0; i < 25; i++)
System.out.print(list2D.get(i).size()+" ");
我明白了
0 0 0 0 0 58110 0 58110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
我不知道为什么...
还可能需要注意 stringList 包含 58110 个值。
此外,我不想制作 25 个不同的 ArrayList!