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;
}
memoList.values()memoList.values()는 Map의 값들(V)만을 추출하여 Collection<V>를 반환Collection<V>는 memoList에 저장된 모든 값들에 접근할 수 있게 해준다..stream()Collection<V>에서 Stream<V>을 생성
Stream은 Java 8에서 도입된 기능으로, 데이터를 함수형 방식으로 처리할 수 있게 해준다.
이 경우 memoList의 값들을 스트림으로 변환하여 이후 연산들을 수행할 수 있다.
.map(MemoResponseDto::new)map() 메서드는 스트림의 각 요소에 대해 특정 작업을 수행하고, 그 결과를 새로운 스트림으로 반환
여기서는 MemoResponseDto::new라는 메서드 참조를 사용하여 MemoResponseDto 생성자를 호출하고 있다.
즉, 스트림의 각 요소(여기서는 memoList의 값들)를 MemoResponseDto 객체로 변환
이를 통해, MemoResponseDto 객체들이 포함된 새로운 스트림이 생성된다.
.toList()마지막으로, 이 변환된 스트림을 List<MemoResponseDto>로 변환
이 메서드는 스트림의 모든 요소를 리스트로 수집하여 반환
이 코드의 전체적인 동작은 memoList에 저장된 값들을 MemoResponseDto 객체로 변환하여, 변환된 객체들을 리스트에 담는 것이다.
결과적으로 responseList는 MemoResponseDto 객체들로 구성된 리스트가 된다.
List<MemoResponseDto> responseList = memoList.values().stream()
.map(MemoResponseDto::new)
.toList();
memoList의 모든 값을 가져온다. (memoList.values()).stream()).MemoResponseDto 객체로 변환(map(MemoResponseDto::new)).List<MemoResponseDto>로 수집 (toList()).→ memoList의 값을 MemoResponseDto 객체로 변환하여 리스트로 반환