[Java] List 안에 중복이 있는지 확인하기 - Distinct

그냥사람·2024년 11월 23일

List 안에 중복이 있는지 확인하는 방법

List 안에 중복이 있는지 확인하는 방법은 Set 자료형을 활용하는 등 여러 가지가 있지만, 그 중에서도 자바의 강력한 데이터 처리 기능인 stream의 distinct 메서드를 활용하면 간단하게 List안에 중복되는 원소가 존재하는지 확인할 수 있다.

(1) 컬렉션명.stream().distinct().count()
(2) 컬렉션명.size()
(3) (1)과 (2)를 비교해 두 수가 같다면 중복이 없는 것이고, 달라진다면 중복이 있는 것이다.

List<Integer> numbers = List.of(1, 2, 2, 3, 4, 4, 5);

if (numbers.stream().distinct().count() != numbers.size()) {
	System.out.println("중복이 존재합니다."); // 중복이 존재하므로 해당 문자열 출력
} else {
	System.out.println("중복이 없습니다");
}

stream을 간단하게 표현하자면 데이터를 처리하기 위한 '임시 작업대'를 여는 것이라 볼 수 있다.
특정 조건을 만족하는 원소들만 걸러내거나(filter), 다른 형태로 변환(map)하는 등, stream을 연 대상(List 등등..)의 원소들에 대한 처리를 간결하게 진행할 수 있다.

distinct는 stream에서 지원하는 데이터 처리 메서드 중 하나인데, 중복된 원소들을 제거하는 작업을 수행한다. 그 후 count 메서드를 통해 중복 원소 제거 후 남은 원소들의 개수와, 원래 컬렉션의 원소 개수를 구해 비교하면 중복 여부를 확인할 수 있다.

profile
Simple is Best, 간결하게 살자

0개의 댓글