Java 8에서 도입된 Stream API는 데이터 컬렉션을 처리하는 데 매우 유용한 기능을 제공합니다. 이 글에서는 map과 collect 메소드를 활용하여 팀원 리스트를 효과적으로 가져오는 방법을 살펴보겠습니다
1. Stream API 개요
Stream API는 컬렉션의 데이터에 대해 연산을 수행할 수 있는 방법을 제공합니다. 특히, map과 collect는 데이터를 변환하고 수집하는 데 주로 사용되는 메소드입니다.
- map: 스트림의 각 요소를 주어진 함수에 따라 변환합니다.
- collect: 스트림의 요소를 컬렉션으로 수집합니다.
2. 예제: 팀원 리스트 가져오기
이제 팀원 리스트를 가져오는 예제를 통해 map과 collect의 사용법을 알아보겠습니다. 다음은 팀원 정보를 DTO(Data Transfer Object)로 변환하는 코드입니다.
// 팀원 리스트 가져오기
List<MemberDto> members = team.getTeamUsers().stream()
.map(teamUser -> new MemberDto(
teamUser.getUser().getName(),
teamUser.getUser().getNickname(),
teamUser.getUser().getPosition(),
teamUser.getRole(),
teamUser.getUser().getAgeRange()
))
.collect(Collectors.toList());
2.1 코드 설명
- 팀 사용자 가져오기: team.getTeamUsers()를 호출하여 팀에 속한 사용자 리스트를 가져옵니다.
- Stream 생성: .stream() 메소드를 호출하여 리스트를 스트림으로 변환합니다.
- map 사용:
- map 메소드는 각 teamUser 객체를 MemberDto 객체로 변환합니다.
- 변환 과정에서 teamUser.getUser()를 통해 사용자 정보를 가져오고, 필요한 필드(name, nickname, position, role, ageRange)를 MemberDto 생성자에 전달합니다.
- collect 사용:
- 최종적으로 collect(Collectors.toList())를 통해 변환된 MemberDto 객체를 리스트로 수집합니다.
이 과정을 통해 팀의 모든 사용자 정보를 포함하는 MemberDto 리스트를 생성할 수 있습니다.
3. map과 collect의 활용성
3.1 map의 장점
- 코드 간결성: map을 사용하면 불필요한 반복문을 생략할 수 있어 코드가 간결해집니다.
- 가독성: 데이터 변환 과정을 명확히 표현할 수 있어 코드의 가독성이 높아집니다.
3.2 collect의 유용성
- 다양한 수집 방식: collect 메소드는 다양한 컬렉션으로 데이터를 수집할 수 있어 유연한 데이터 처리가 가능합니다. 예를 들어, toSet()을 사용하면 중복을 제거한 Set으로 수집할 수 있습니다.

4. 결론
Stream API의 map과 collect 메소드를 사용하면 데이터 변환과 수집을 효율적으로 처리할 수 있습니다. 위 예제를 통해 팀원 리스트를 간단히 가져오는 방법을 살펴보았으며, 이러한 접근 방식을 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.
'백엔드 > 스프링' 카테고리의 다른 글
| [테스트] nGrinder - 성능 테스트 환경 구성하기 (1) | 2024.11.24 |
|---|---|
| [백엔드] QueryDSL (1) | 2024.11.19 |
| [백엔드] Spring Boot에서 GlobalExceptionHandler를 활용한 전역 예외 처리 마스터하기 (1) | 2024.10.06 |
| [백엔드] @Scheduled(Cron)를 프로젝트에 응용하기 (1) | 2024.09.30 |
| [백엔드] Spring Security와 JWT를 활용한 REST API 인증 및 CORS 문제 해결 (4) | 2024.09.08 |