728x90
List<Walk> walkList = activityRepository.findByUsername(username);
List<GetWalkDto> res = new ArrayList<>();
for(Walk w : walkList){
res.add(new GetWalkDto(w.getDistance(), w.getAvg_heart_rate()));
}
return res;
Walk 리스트를 가져와서 Dto에 맞게 리턴해주는 함수이다. 그러나 이것은 너무 길고 비효율적이다. stream 을 사용해 최적화할 수 있다.
List<Walk> walkList = activityRepository.findByUsername(username);
return walkList.stream()
.map(w -> new GetWalkDto(w.getDistance(), w.getAvg_heart_rate()))
.collect(Collectors.toList());
}
결국 모든 Walk를 새로운 타입으로 지정하는 것이다. 그러므로
1. walk 리스트를 스트림으로 만든다.
2. 매핑함수 map을 통해 파라미터 w를 새로운 dto로 만들고 마지막에 컬렉션으로 수집한다.
마치 자바스크립트의 고차함수와 비슷한 개념이다. 알아두면 간결하고 효율적인 코드를 작성할 수 있으니 알아두자.
'Dev > Spring Boot' 카테고리의 다른 글
Spring Boot - RestClient 로 공공데이터 얻어오기 (0) | 2024.08.20 |
---|---|
Spring 새로운 HTTP 클라이언트 - RestClient (0) | 2024.08.13 |
Servlet - HttpServlet 사용법 (Request , Response) (0) | 2024.06.04 |
Spring 기초 1) WAS란 무엇인가? (0) | 2024.04.18 |
API 최적화1 - N + 1 문제, Lazy 메커니즘, 패치조인 (0) | 2024.03.19 |