오늘은 자바의 Stream API를 활용하여 두 리스트 간의 중복값을 찾는 방법에 대해 알아보겠습니다. Stream API는 자바 8부터 제공되는 강력한 기능으로, 컬렉션을 보다 간편하고 효율적으로 처리하는 데 도움을 줍니다. 데이터 처리 과정에서 중복 제거는 매우 유용한 작업 중 하나인데요, 아래 코드를 통해 실습해보도록 하겠습니다.
들어가며
리스트나 배열에서 중복되는 데이터를 처리하는 것은 여러 분야에서 빈번하게 발생하는 문제입니다. 예를 들어, 고객 목록에서 중복된 이메일 주소를 제거하거나, 학생 명단에서 중복된 이름을 체크하는 작업이 있을 수 있습니다. 이 포스트에서는 자바의 Stream을 사용하여 이러한 중복을 어떻게 쉽게 찾고 처리할 수 있는지를 다룰 것입니다.
코드 작성하기
아래 코드는 두 개의 리스트를 비교하여 중복되지 않는 값과 중복되는 값을 각각 추출하는 예제입니다.
package com.java.stream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class MyList {
public static void compareList() {
List<String> list1 = new ArrayList<String>(Arrays.asList("1", "2", "3", "4"));
List<String> list2 = new ArrayList<String>(Arrays.asList("3", "4", "5", "6"));
List<String> resultList = list1.stream()
.filter(old -> list2.stream()
.noneMatch(Predicate.isEqual(old)))
.collect(Collectors.toList());
System.out.println("중복되지 않는 값 => " + resultList); // 중복되지 않는 값만 추출
List<String> resultList2 = list1.stream()
.filter(old -> list2.stream()
.anyMatch(Predicate.isEqual(old)))
.collect(Collectors.toList());
System.out.println("중복되는 값 => " + resultList2); // 중복되는 값만 추출
}
public static void main(String[] args) {
compareList();
}
}
코드 설명하기
- 리스트 초기화
두 개의 리스트(list1와 list2)를 생성하여 비교할 값을 저장합니다. 상기 예제에서는 list1에 "1", "2", "3", "4"가 있고, list2에는 "3", "4", "5", "6"이 있습니다. - 중복되지 않는 값 추출
noneMatch
메서드를 사용하여 list2에 없는 값만 필터링하여 resultList에 저장합니다. 이때Predicate.isEqual(old)
를 통해 각 요소를 비교하게 됩니다. - 중복되는 값 추출
반대로 anyMatch
메서드를 사용하여 list2에 있는 값을 필터링하여 resultList2에 저장합니다. 이는 list1의 요소 중 list2에 존재하는 값을 찾는 로직입니다.
결과
위의 코드 실행 결과는 다음과 같습니다:
중복되지 않는 값 => [1, 2]
중복되는 값 => [3, 4]
이 결과는 list1에서 list2와 중복되지 않는 값은 "1"과 "2"임을 보여주고, 중복되는 값은 "3"과 "4"임을 보여줍니다.
마무리
자바의 Stream API를 활용한 리스트 비교 방법에 대해 살펴보았습니다. 이처럼 간단한 코드로도 리스트 사이의 중복 여부를 손쉽게 확인할 수 있습니다. 이 기술은 데이터 처리 및 분석, UI 개발 등 다양한 분야에서 활용될 수 있습니다. 여러분도 실습해보고, 중복 데이터 처리를 통해 코드의 효율성을 높여보세요! 질문이나 추가적인 정보가 필요하다면 언제든지 댓글로 남겨주세요. 다음 포스트에서 만나요!
'개발' 카테고리의 다른 글
Spring Boot에서 Swagger 연동하기: 에러 해결과 설정 가이드 (0) | 2024.11.13 |
---|---|
Java Stream으로 DTO 리스트를 String 리스트로 쉽게 변환하는 방법 (1) | 2024.11.13 |
AWS에서 SSL 인증서 생성과 로드밸런서 설정하는 방법 안내 (0) | 2024.11.13 |
AWS EC2에서 시스템 시간을 한국 표준시로 변경하는 방법 안내 (0) | 2024.11.13 |
AWS Route 53과 가비아 도메인 연결하는 완벽 가이드 (1) | 2024.11.13 |