Map To List

이유진·2024년 8월 11일

TIL

목록 보기
16/24
post-thumbnail

🌱 Map To List

    private final Map<Long, Memo> memoList = new HashMap<>();
								.
                                .
                                .
    @GetMapping("/memos")
    public List<MemoResponseDto> getMemos(){
        //Map To List
        List<MemoResponseDto> responseList = memoList.values().stream()
                .map(MemoResponseDto::new).toList();

        return responseList;
    }               

1. memoList.values()

  • memoList.values()Map의 값들(V)만을 추출하여 Collection<V>를 반환
  • Collection<V>memoList에 저장된 모든 값들에 접근할 수 있게 해준다.

2. .stream()

  • Collection<V>에서 Stream<V>을 생성

  • Stream은 Java 8에서 도입된 기능으로, 데이터를 함수형 방식으로 처리할 수 있게 해준다.

    이 경우 memoList의 값들을 스트림으로 변환하여 이후 연산들을 수행할 수 있다.

3. .map(MemoResponseDto::new)

  • map() 메서드는 스트림의 각 요소에 대해 특정 작업을 수행하고, 그 결과를 새로운 스트림으로 반환

    여기서는 MemoResponseDto::new라는 메서드 참조를 사용하여 MemoResponseDto 생성자를 호출하고 있다.

  • 즉, 스트림의 각 요소(여기서는 memoList의 값들)를 MemoResponseDto 객체로 변환

    이를 통해, MemoResponseDto 객체들이 포함된 새로운 스트림이 생성된다.

4. .toList()

  • 마지막으로, 이 변환된 스트림을 List<MemoResponseDto>로 변환

  • 이 메서드는 스트림의 모든 요소를 리스트로 수집하여 반환

전체적인 동작

  • 이 코드의 전체적인 동작은 memoList에 저장된 값들을 MemoResponseDto 객체로 변환하여, 변환된 객체들을 리스트에 담는 것이다.

  • 결과적으로 responseListMemoResponseDto 객체들로 구성된 리스트가 된다.

요약

List<MemoResponseDto> responseList = memoList.values().stream()
                .map(MemoResponseDto::new)
                .toList();
  • memoList의 모든 값을 가져온다. (memoList.values()).
  • 이 값들을 스트림으로 처리 (stream()).
  • 각 값을 MemoResponseDto 객체로 변환(map(MemoResponseDto::new)).
  • 최종적으로 변환된 객체들을 List<MemoResponseDto>로 수집 (toList()).

memoList의 값을 MemoResponseDto 객체로 변환하여 리스트로 반환

profile
🙌중요한건 꺾였는데도 그냥 하는 마음

0개의 댓글