어제 오늘 내일

[Java] List 중복제거 하면서 합치기 본문

IT/Java

[Java] List 중복제거 하면서 합치기

hi.anna 2021. 5. 6. 06:07

 

지난 포스팅에서는 2개의 List를 합치는 방법을 알아보았습니다.

[Java] List 2개 합치기

 

[Java] List 2개 합치기

Java에서 2개의 List를 합쳐서 하나로 만드는 방법입니다. List.addAll() Collections.addAll() Stream.of() + flatMap() + collect() 1. List.addAll() boolean addAll​(Collection c) java.util.L..

hianna.tistory.com

 

이번에는 중복은 제거하면서, 2개의 List를 합치는 방법을 알아보겠습니다.

 

  1. LinkedHashSet 이용하기
  2. List.removeAll() 이용하기

 

 

1. LinkedHashSet 이용하기

LinkedHashSet 클래스는,

중복을 허용하지 않으면서, 데이터가 입력된 순서대로 데이터를 저장하여,

List를 LinkedHashSet으로 변환하거나, LinkedHashSet을 List로 변환할 때 순서를 보장할 수 있습니다.

  코드  

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class MergeListWithoutDuplication {
    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>(Arrays.asList("A", "B"));
        List<String> list2 = new ArrayList<>(Arrays.asList("B", "C"));

        // list1을 LinkedHashSet으로 변환
        Set<String> set = new LinkedHashSet<>(list1);

        // LinkedHashSet 객체에 list2 병합
        set.addAll(list2);

        // LinkedHashSet 객체를 List로 변환
        List<String> mergedList = new ArrayList<>(set);

        // 결과 출력
        System.out.println(mergedList);  // [A, B, C]
    }
}

  결과  

[A, B, C]

 

 

 

2. List.removeAll() 이용하기

boolean removeAll(Collection<?> c)

List의 removeAll() 메소드는

파라미터로 전달된 Collection 객체가 가지고 있는 값이 list에 있으면

이 값들을 모두 list에서 제거합니다.

 

  코드  

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MergeListWithoutDuplication {
    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>(Arrays.asList("A", "B"));
        List<String> list2 = new ArrayList<>(Arrays.asList("B", "C"));

        // list1으로 새로운 mergedList 생성
        List<String> mergedList = new ArrayList<>(list1); // [A, B]

        // mergedList에서 list2와 중복되는 항목 제거
        mergedList.removeAll(list2); // [A]

        // mergedList와 list2 합치기
        mergedList.addAll(list2); // [A, B, C]

        // 결과 출력
        System.out.println(mergedList);  // [A, B, C]
    }
}

  결과  

[A, B, C]

mergedList.removeAll(list2);

mergedList의 항목 중 list2의 항목과 중복되는 항목을 삭제한 후,

 

mergedList.addAll(list2);

mergedList에 list2를 병합하였습니다.

 


 

2개의 List를 합칠 때, 중복을 제거하면서 합치는 방법을 알아보았습니다.

반응형
Comments