1

次の構造があり、このようなリストを作成したとします。私がそうしtemp.remove(0)ても、元のリストには影響しませんが、元のリストtemp.get(0).vars.remove(0)からも要素が削除されます。

new ArrayList(top.mids)ディープコピーを行っていないと思うのですがtemp.remove(0)、なぜ元のリストに影響しないのでしょうか?

//Top class init part and adding elements are omitted
List<Mid> temp = new ArrayList(top.mids);
temp.remove(0);
temp.get(0).bots.remove(0);


public class Top{
    List<Mid> mids = new ArrayList<Mid>();
}

public class Mid{
    List<Bot> bots = new ArrayList<Bot>();

}

public class Bot{
    int id; 
}
4

2 に答える 2