프로그래밍 언어/Java

[Java] 깊은복사(deepcopy)

DevPing9_ 2021. 10. 4. 20:04

1. 원시타입의 1차원배열 

 # clone() 메서드

  - 배열안의 값을 복사함

  - 따라서, 1차원배열은 deepcopy 가능하나 2차원배열이나 객체배열은 사용 불가능

    (2차원배열은 사실상 1차원배열이고, element는 각 1차원배열의 주소값이니, 배열안의 값을 복사하면 주소값을 복사하는 셈) 

    (1차원 객체배열도 같은원리)

 

2. 원시타입  -> 오브젝트 타입

 # Stream을 이용한 복사

  - Java 8 이후 버전

  - Arrays.stream(원시타입배열).boxed().collect(Colletors.to구현된원하는 자료형());

 # for 문을 이용한 복사

  - 그냥 for 문으로 복사...

 

 

3. 오브젝트 타입 -> 오브젝트 타입

 # 생성자를 이용한 deepcopy

   - ArrayList<Integer> copiedArrList = new ArrayList<>(arrList1);

 # for 문을 이용한 복사

   - 그냥 for 문으로 복사...

728x90