ここで何が起こっているのかを理解しようとしており、助けていただければ幸いです。新しいオブジェクトを作成して ArrayList に追加するループがあります。しかし、ループを通過するたびに、新しいオブジェクトが実際には以前に作成されたオブジェクトも変更しているように見えます。ArrayList には実際にはオブジェクトへの参照しか含まれていないことは理解していますが、毎回 new を呼び出すことで新しいインスタンスが作成されるため、各参照が一意になると考えました。
コードは次のとおりです。
void copyFields()
{
String fruitStr = "apple red,banana yellow,orange orange,pear green,grape purple";
String[][] fruitArray = new String[5][];
String[] fruitPairs = fruitStr.split(",");
int r = 0;
for (String fruitPair : fruitPairs)
{
fruitArray[r++] = fruitPair.split(" ");
}
ArrayList<Fruit> fruitList = new ArrayList<Fruit>();
for (String[] f : fruitArray)
{
Fruit fruitObj = new Fruit(f[0],f[1]);
fruitList.add(fruitObj);
}
}
したがって、最後に fruitList には 5 つのオブジェクトが含まれます。これらはすべて、fruitArray の最後の要素 (紫のブドウ) と同じです。
果物と色のペアのリストを含む文字列から、2 次元配列、果物オブジェクトの ArrayList に移動しようとしていることがわかります。for ループを実行するたびに、fruitList 内の以前のすべてのオブジェクトが変更されるという fruitList の作成をデバッガーで監視するまで、各ステップが正しく機能していることを確認できます。
ここで何が欠けていますか?