흰 스타렉스에서 내가 내리지

stream과 람다를 활용한 예시 본문

Java

stream과 람다를 활용한 예시

주씨. 2023. 7. 22. 01:02
728x90
List<FolderSimpleInfoDto> responseDto = new ArrayList<>();
for(Folder folder : folders){
    responseDto.add(FolderSimpleInfoDto.of(folder));
}
return responseDto;

다음의 코드는 stream()과 람다식을 통해 한줄로 줄일 수 있다. 

return folders.stream()
              .map(FolderSimpleInfoDto::of)
              .collect(Collectors.toList());

 

folders.stream()으로 List를 스트림으로 변환하고, 

map(FolderSimpleInfodto::of) 로 각 Folder 객체를 FolderSimpleInfoDto로 변환한다. 

마지막으로, collect(Collectors.toList()) 를 사용하여 스트림 요소를 List로 다시 변환한다. 

 

Java 8 버전 이상부터 사용할 수 있다. 

 

 

List<String> alreadyArchivedFolderNames = new ArrayList<>();
for(Folder folder : folders){
    if(folderTermRepository.existsByFolderAndTerm(folder, term)){
        alreadyArchivedFolderNames.add(folder.getTitle());
    }
}
List<String> alreadyArchivedFolderNames = folders.stream()
    .filter(folder -> folderTermRepository.existsByFolderAndTerm(folder, term))
    .map(Folder::getTitle)
    .collect(Collectors.toList());

스트림에서 filter 함수를 사용한 예시는 위와 같다.