如何正确创建ArrayLists的ArrayList?

jav*_*ava 8 java arraylist object

我正在尝试创建ArrayLists的ArrayList.我想创建25个ArrayLists并使这些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))
Run Code Online (Sandbox Code Playgroud)

问题是每个列表在完成后都包含相同的值.

我知道问题发生的原因."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);
    }
Run Code Online (Sandbox Code Playgroud)

但是当我测试我的"list2D"时

    for(int i = 0; i < 25; i++)
         System.out.print(list2D.get(i).size()+" ");
Run Code Online (Sandbox Code Playgroud)

我明白了

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种不同的ArrayLists!

Pet*_*rey 12

我会尝试以下方法来执行stringList的单次传递

List<List<String>> dict = new ArrayList<>();
for(string s: stringsList) {
    int len = s.length();
    // add new array lists as required, could be any length, assuming << 100
    while(dict.size() <= len) dict.add(new ArrayList<String>());
    // add the string to the right list.
    dict.get(len).add(s);
}
Run Code Online (Sandbox Code Playgroud)