코딩딩/Java

List에 담긴 Entity를 DTO로 변환하며 정렬하는 방법

전낙타 2024. 1. 11. 14:33
	@Transactional(readOnly = true)
	public List<ResponseReviewDto> findReviewsByMemberEmail(String memberEmail) {

		List<Review> reviews = reviewRepository.findReviewsByMemberEmail(memberEmail);

		return reviews.stream()
			.map(ResponseReviewDto::toDto)
			.sorted(Comparator.comparing(ResponseReviewDto::getReviewSeq)
				.reversed())
			.collect(Collectors.toList());
	}

 

다음과 같이 수정하면 된다.

 

여기서 .map(ResponseReviewDto::toDto) 까지는 자주 사용하는 람다식이지만 그 밑에 sorted는 약간 생소할수도 있다.

 

하나의 역할씩 의사코드를 작성하며 풀이해보자

 

// 정렬할것이다 (무엇을?)
.sorted(
	// Comparator 객체로 각각의 객체를 비교할것 (어떤 기준으로?)
	Comparator.comparing
    	// 각각의 ResponseReviewDto가 가지고 있는 reviewSeq를 기준으로 (어떻게?)
    	(ResponseReviewDto::getReviewSeq)
    // 역순으로 정렬할것
	.reversed())

간단히 정리해보자면 이렇게 된다.