어제 오늘 내일

[Java] 두 개의 List를 비교하여, 서로 중복되는 값 찾기 본문

IT/Java

[Java] 두 개의 List를 비교하여, 서로 중복되는 값 찾기

hi.anna 2021. 6. 18. 22:26

 

두 개의 List를 비교하여,

서로 중복되는 값을 찾기 위해서

Collection 객체의 retainAll() 메소드를 사용할 수 있습니다.

 

java.util.Collection의 retainAll()

boolean retainAll(Collection<?> c)

retainAll() 메소드는

파라미터로 전달받은(c) Collection 객체가 포함하고 있는 값만을

원본 Collection 객체가 가지도록 합니다.

즉, 파라미터로 전달받은(c) Collection 객체가 가지고 있지 않은 값은,

원본 Collection 객체에서 삭제합니다.

다시 말하면, 결국 원본 Collection 객체는 

파라미터로 전달받은 Collection 객체와 중복되는 값 만을 가지게 됩니다.

 

리턴값

메소드를 실행하고, 원본 Collection 객체가 변경되면 true를 리턴합니다.

 

 

  예제  

List는 Collection 객체이므로, retainAll() 메소드를 사용할 수 있습니다.

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

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

        // 비교할 List 준비
        List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3));
        List<Integer> list2 = new ArrayList<>(Arrays.asList(2, 3, 4));

        // 비교해서 중복값 찾기
        list1.retainAll(list2);

        // 결과 출력
        System.out.println(list1);  // [2, 3]
        System.out.println(list2);  // [2, 3, 4]

    }
}

list1.retainAll(list2);

retainAll() 메소드는 list1에서 list2가 가지고 있는 값들만 남깁니다.

즉, list1에는 list2와 중복된 값들만 남게 됩니다.

여기서 주의할 것은,

list1의 원본 List가 변경되다는 것에 유의하여야 합니다.

 


 

두 개의 List에서 retainAll() 메소드를 사용하여 중복된 값을 찾는 방법을 알아보았습니다.

 

 

 

반응형
Comments