[java] 컬렉션 프레임워크의 데이터 복사

컬렉션 프레임워크는 자바에서 다양한 형태의 데이터를 저장하고 처리하기 위한 유용한 도구입니다. 때로는 컬렉션에 저장된 데이터를 다른 컬렉션으로 복사해야하는 경우가 있습니다. 이번 블로그 포스트에서는 자바의 컬렉션 프레임워크에서 데이터를 복사하는 방법에 대해 알아보겠습니다.

1. ArrayList 복사하기

ArrayList는 가장 일반적으로 사용되는 컬렉션 중 하나이므로 먼저 ArrayList를 복사하는 방법을 알아보겠습니다.

ArrayList<Integer> originalList = new ArrayList<>();
originalList.add(1);
originalList.add(2);
originalList.add(3);

ArrayList<Integer> copiedList = new ArrayList<>(originalList);

System.out.println("Original List: " + originalList);
System.out.println("Copied List: " + copiedList);

위의 코드에서는 originalList에 1, 2, 3을 추가하고, copiedListoriginalList를 복사한 후에 출력하는 예제입니다. ArrayList 생성자를 사용하여 originalList를 인자로 전달함으로써 copiedList를 생성합니다.

2. LinkedList 복사하기

LinkedList를 복사하는 방법도 ArrayList와 유사합니다.

LinkedList<String> originalList = new LinkedList<>();
originalList.add("Apple");
originalList.add("Banana");
originalList.add("Cherry");

LinkedList<String> copiedList = new LinkedList<>(originalList);

System.out.println("Original List: " + originalList);
System.out.println("Copied List: " + copiedList);

LinkedList의 경우에도 ArrayList와 동일한 방식으로 복사할 수 있습니다.

3. HashSet 복사하기

HashSet의 경우에도 ArrayList와 LinkedList와 같은 방식으로 복사할 수 있습니다.

HashSet<Integer> originalSet = new HashSet<>();
originalSet.add(1);
originalSet.add(2);
originalSet.add(3);

HashSet<Integer> copiedSet = new HashSet<>(originalSet);

System.out.println("Original Set: " + originalSet);
System.out.println("Copied Set: " + copiedSet);

HashSet의 경우에는 중복된 값을 허용하지 않기 때문에 중복된 값은 제거된 채로 복사됩니다.

4. 데이터 복사 주의사항

컬렉션 프레임워크에서 데이터를 복사할 때 주의해야 할 몇 가지 사항이 있습니다.

  1. 복사된 컬렉션은 원본과 서로 다른 객체이므로, 복사된 컬렉션을 변경해도 원본에는 영향을 주지 않습니다.
  2. 복사된 컬렉션은 원본과 동일한 데이터를 가지지만, 객체 자체는 독립적입니다. 따라서 객체를 변경하면 복사된 컬렉션에만 영향을 주고, 원본은 영향을 받지 않습니다.
  3. 복사된 컬렉션은 얕은 복사이므로, 객체의 레퍼런스만 복사됩니다. 따라서 객체의 내용이 변경되면 원본과 복사본 모두에 영향을 줍니다.

결론

이번 포스트에서는 자바의 컬렉션 프레임워크에서 데이터를 복사하는 방법에 대해 간단히 알아보았습니다. ArrayList, LinkedList, HashSet와 같은 컬렉션을 복사할 때에는 해당 컬렉션의 생성자를 사용하면 간단하게 복사할 수 있습니다. 하지만 데이터를 복사하는 과정에서 주의해야 할 사항들도 함께 기억해두시기 바랍니다.

참고 자료