Java에서 ArrayList를 다른 ArrayList로 복사 / 복제

이 자습서에서는 한 ArrayList의 모든 항목을 다른 ArrayList로 복사하는 방법을 살펴보겠습니다. clone() 을 사용하여 목표를 달성할 수 있습니다.

Object clone(): 이 메서드는 ArrayList.

복제의 복사본을 반환한다고해서 원본 목록과 복제 된 목록이 모두 동일한 메모리 상자를 가리키는 것은 아닙니다. 이것은 목록 b = a; 입니다. 첫 번째 목록에서 항목을 변경하면 두 번째 목록에서도 변경됩니다.

복제는 동일한 항목을 유지하는 새 인스턴스를 만듭니다. 즉, 두 개의 서로 다른 목록이 있지만 해당 내용은 동일합니다. 첫 번째 목록에서 요소를 변경하면 두 번째 목록에서는 변경되지 않습니다.

이 예에서는 문자열 유형의 ArrayList가 있으며 메서드를 사용하여 복제합니다.  clone().  여기서 흥미로운 점은 clone.

import java.util.ArrayList; 

public class ArrayList_clone {

public static void main(String[] args) {
ArrayList< 문자열> al = 새로운 ArrayList< 문자열> ();

//ArrayList에 항목 추가
al.add("pen");
al.add("키트");
al.add("연필");
al.add("계산기");
System.out.println("ArrayList: "+al);

ArrayList입니다< 문자열> al2 = (배열 목록< 문자열>) al.clone()을 호출합니다.
System.out.println("복제된 ArrayList: "+ al2);

//원래 목록에서 항목 추가 및 제거
al.add("Notebook");
al.remove("연필");

//추가 및 삭제 후 두 목록 모두 표시
System.out.println("Original ArrayList: "+al);
System.out.println("복제된 ArrayList: "+al2);
}
}
런타임:

ArrayList: [펜, 키트, 연필, 계산기]
복제된 ArrayList: [펜, 키트, 연필, 계산기]
ArrayList 원본: [펜, 키트, 계산기, 노트북]
복제된 ArrayList: [펜, 키트, 연필, Calculator]
그러나 clone() 메서드를 사용하지 않는 것이 좋습니다. 컬렉션과 매우 잘 작동하지만 일반적으로 빌더 new ArrayList입니다.