ArrayLists の 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))
問題は、終了後にすべてのリストに同じ値が含まれることです。
問題が発生する理由はわかっています。「リスト」は 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
理由がわかりません...
また、stringList には 58110 個の値が含まれていることに注意してください。
また、25 の異なる ArrayList を作成する必要はありません。