SeouliteLab

[Java/자바] ArrayList의 깊은 복사(deep copy) 예제 본문

프로그래밍

[Java/자바] ArrayList의 깊은 복사(deep copy) 예제

Seoulite Lab 2024. 3. 7. 09:16

ArrayList는 Java에서 많이 사용되는 동적 배열입니다. 때로는 ArrayList를 복사할 때 원본 리스트의 요소와 별도로 새로운 인스턴스를 생성해야 할 때가 있습니다. 이러한 경우에는 깊은 복사(deep copy)를 사용해야 합니다. 이 블로그 게시물에서는 Java에서 ArrayList의 깊은 복사를 수행하는 여러 가지 방법을 살펴보겠습니다.

예제 1: Collections 클래스 사용

import java.util.ArrayList;
import java.util.Collections;

ArrayList<String> originalList = new ArrayList<>();
originalList.add("apple");
originalList.add("banana");
originalList.add("orange");

ArrayList<String> deepCopyList = new ArrayList<>(originalList);
deepCopyList.add("grape");  // Modify the deep copy list

System.out.println("Original list: " + originalList);
System.out.println("Deep copy list: " + deepCopyList);

위 예제에서는 Collections 클래스의 생성자를 사용하여 깊은 복사를 수행합니다. 이 방법은 간단하고 편리하지만, 리스트의 요소가 가변 객체일 경우 문제가 발생할 수 있습니다.

예제 2: 직접 복사

import java.util.ArrayList;

ArrayList<String> originalList = new ArrayList<>();
originalList.add("apple");
originalList.add("banana");
originalList.add("orange");

ArrayList<String> deepCopyList = new ArrayList<>();
for (String item : originalList) {
    deepCopyList.add(item);
}

deepCopyList.add("grape");  // Modify the deep copy list

System.out.println("Original list: " + originalList);
System.out.println("Deep copy list: " + deepCopyList);

위 예제에서는 반복문을 사용하여 요소를 하나씩 복사하여 깊은 복사를 수행합니다. 이 방법은 요소가 가변 객체인 경우 안전하게 복사할 수 있습니다.