[java] distinct() 메서드를 이용한 중복 제거 방법

Java 8부터 Stream 클래스에서 제공하는 distinct() 메서드를 통해 중복된 요소를 제거할 수 있습니다. 이 메서드를 사용하면 간편하게 중복 요소를 제거하고 유니크한 요소만 남길 수 있습니다.

사용법

distinct() 메서드는 중복 요소가 제거된 새로운 스트림을 반환합니다. 따라서 이를 사용하기 위해서는 먼저 스트림을 생성해야 합니다.

다음은 distinct() 메서드를 사용하여 중복을 제거하는 간단한 예제입니다.

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

public class DistinctExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 2, 3, 1, 4, 5);
        
        List<Integer> distinctNumbers = numbers.stream()
                                               .distinct()
                                               .toList();
        
        System.out.println("Distinct numbers: " + distinctNumbers);
    }
}

위 코드에서는 Streamdistinct() 메서드를 이용하여 numbers 리스트에서 중복 요소를 제거합니다. 그리고 toList() 메서드를 호출하여 새로운 리스트를 생성합니다.

출력결과

실행 결과는 다음과 같습니다.

Distinct numbers: [1, 2, 3, 4, 5]

위 예제에서는 중복된 숫자 2와 3이 제거되고 유니크한 숫자만을 포함한 새로운 리스트가 생성되었습니다.

주의사항

distinct() 메서드를 사용할 때 주의해야 할 점이 있습니다. distinct() 메서드는 중복을 제거하기 위해 hashCode()equals() 메서드를 사용합니다. 따라서 중복 제거의 기준이 되는 객체는 hashCode()equals()를 제대로 구현해야 올바른 결과를 얻을 수 있습니다.

만약 사용자 정의 클래스를 사용한다면 hashCode()equals()를 적절히 오버라이드하여 중복을 올바르게 제거할 수 있도록 해야 합니다.

참고 자료