TIL

Stream() 사용 방법.

Big Iron 2023. 3. 20. 18:15
    public List<PostResponseDto> getAllPost(User user) {

        // 모든 게시글 작성일별 내림차순 리스트
        List<Post> posts = postRepository.findAllByOrderByCreatedAtDesc();

        List<PostResponseDto> postList = new ArrayList<>();
        for (Post post : posts) {
            postList.add(new PostResponseDto(post, isLike));
        }
        return postList;
    }

예를 들어 위와 같은 전체 게시글을 조회하는 기능이 있다 가정하고 Stream을 사용해보자.

postRepository.findAllByOrderByCreatedAtDesc().stream().map(post -> new PostResponseDto(post)).collect(Collectors.toList());

map 안의 코드를 잘 봐야 하는데 post 형식을 PostResponseDto 형식으로 형변환 한다고 생각하면 편하다.
하지만 map을 조금 더 짧게 사용할 수 있고 적용하면 아래와 같다.

return postRepository.findAllByOrderByCreatedAtDesc().stream().map(PostResponseDto::new).collect(Collectors.toList());