Java | deep copy & shallow copy
Deep Copy & Shallow Copy
Note:
Sample Example
import java.util.ArrayList;
import java.util.List;
public class MainCopy {
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
init(stringList);
List<String> strings2 = stringList;
System.out.println("list 1: " + stringList);
System.out.println("list 2: " + strings2);
System.out.println("인덱스 0 값 삭제");
stringList.remove(0);
System.out.println("list 1: " + stringList);
System.out.println("list 2: " + strings2);
}
public static void init(List<String> stringList) {
for (int i = 0; i < 5; i++) {
stringList.add("test" + i);
}
}
}
結果を見ると、2つのリストの値が消えてしまいます.
import java.util.ArrayList;
import java.util.List;
public class MainCopy {
public static void main(String[] args) {
List<String> stringList = new ArrayList<>();
init(stringList);
List<String> strings2 = new ArrayList<>();
strings2.addAll(stringList);
System.out.println("list 1: " + stringList);
System.out.println("list 2: " + strings2);
System.out.println("인덱스 0 값 삭제");
stringList.remove(0);
System.out.println("list 1: " + stringList);
System.out.println("list 2: " + strings2);
}
public static void init(List<String> stringList) {
for (int i = 0; i < 5; i++) {
stringList.add("test" + i);
}
}
}
두번째 만든 리스트에 addAll 함수로 데이터를 넣어준다.
Reference
この問題について(Java | deep copy & shallow copy), 我々は、より多くの情報をここで見つけました https://velog.io/@ewan/Java-Deep-Copy-Shallow-Copyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol