List.copyOf()にコピーした後、元のバージョンを変更するとコピーが変更されますか?
List.copyOf()にコピーした後、元のバージョンを変更するとコピーが変更されますか?
->変わるかもしれないし、変わらないかもしれない.
元の参照オブジェクトの値が変更されると、コピーも変更されます.
原本もコピーも同じ参照を指しているからです.
例)
絵で表現するとこうなるはずです.
例)
->変わるかもしれないし、変わらないかもしれない.
変更された場合
元の参照オブジェクトの値が変更されると、コピーも変更されます.
原本もコピーも同じ参照を指しているからです.
例)
public static void main(String[] args) {
List<Hello> original = new ArrayList<>();
original.add(new Hello("hi"));
original.add(new Hello("hi2"));
List<Hello> newONE = List.copyOf(original);
original.get(0).setSth("bye");
System.out.println("original: " + original);
System.out.println("new: " + newONE);
}
絵で表現するとこうなるはずです.
元のファイルの追加、削除、設定などのリスト単位操作を行う場合、コピーは影響を受けません。
例)
public static void main(String[] args) {
List<Hello> original = new ArrayList<>();
original.add(new Hello("hi"));
original.add(new Hello("hi2"));
List<Hello> newONE = List.copyOf(original);
original.add(new Hello("bye"));
System.out.println("original: " + original);
System.out.println("new: " + newONE);
}
Reference
この問題について(List.copyOf()にコピーした後、元のバージョンを変更するとコピーが変更されますか?), 我々は、より多くの情報をここで見つけました https://velog.io/@jin942002/List.copyOf로-복사한-후-원본을-수정하면-복사본이-바뀔까テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol