これは本当に些細なことのように思えますが、2D String ArrayList を新しい 2D String ArrayList データ構造全体にコピーするのに問題があります。
public static ArrayList<ArrayList<String>> copy(ArrayList<ArrayList<String>> input) {
ArrayList<ArrayList<String>> copy = new ArrayList<ArrayList<String>>();
for(int i = 0; i < input.size(); i++) {
ArrayList<String> line = input.get(i); // Issue here?
for(int j = 0; j < input.get(i).size(); j++) {
line.set(j, input.get(i).get(j));
}
}
return copy;
}
浅いコピーを作成するつもりはありません。ArrayList 全体を反復処理して新しいものにコピーしようとしています。行 ArrayList で行を正しく初期化していないように感じますが、ArrayList データ構造の要点は、サイズを初期化せずにデータを追加できることだと思いましたか?
最初の行は正しくコピーされているように見えますが、後続の行を追加しようとすると範囲外にインデックスが作成されます。