티스토리 뷰
아래는 DB에 저장된 게시글을 다 꺼내서 List로 조회하는 로직이다.
이것을 스트림을 이용하면 단 3줄로 줄일 수 가 있다.
위 코드에서는 스트림의 map과 collect, 람다의 메서드참조를 사용하였다. 어떻게 첫번째 사진이 두번째 사진으로 될 수 있는지 파헤쳐보자.
- stream
먼저 boardRepository.findAll()은 DB에 있는 게시글들을 List형태로 리턴해준다. 여기에 .stream()을 붙여서 스트림을 얻었다.
이렇게 게시글 리스트에다가 stream 메서드를 호출함으로써 map, filter, limit, collect 등 데이터 처리 연산을 할 수 있게 된다.
- map
람다를 이용해서 한 요소를 다른 요소로 변환하거나 정보를 추출해준다. 위 코드에서는 람다의 메서드 참조를 이용해서
List<Board>를 List<BoardResponseDto>로 변환시킨다. 이것을 메서드참조가 아닌 람다 표현식으로 바꾸면 다음과 같다.
.map(board -> new BoardResponseDto(board))
그래서 BoardResponseDto 메서드의 파라미터로 Board형태로 받아야 한다.
만약 이렇게 받지 않고 인자를 하나하나 받게 되면 오류가 뜰 것이다.
메서드 참조를 사용하면 가독성과 코드의 의도를 명확하게 알릴 수 있다.
- collect
스트림을 다른 형식으로 변환한다. 위 코드에서는 스트림을 리스트로 변환했다. 어떻게 변환했는지의 과정은 일단 제쳐두고
collect가 스트림에 누적된 요소를 특정한 결과로 변환시키는 기능을 수행하는 정도로만 이해하자.
이렇게 JAVA8 컬렉션을 사용하면 보다 가독성이 좋은 코드가 완성된다.
'Java' 카테고리의 다른 글
[자바 객체지향의 원리와 이해 책] 3장 1-2챕터 요약 (0) | 2022.08.18 |
---|---|
[자바 객체지향의 원리와 이해 책] 2장 챕터 1-2 요약 (0) | 2022.08.17 |
디폴트 메서드를 사용하기 전과 후 비교 (0) | 2022.07.10 |
null 대신 Optional 클래스를 사용하자 (0) | 2022.07.06 |
예외처리 개념과 예외처리를 할 때 출력만 하면 안되는 이유 (0) | 2022.05.01 |
- Total
- Today
- Yesterday