Etc
Java8, Stream API와 레거시 For
SuperDT
2025. 5. 4. 23:49
데이터 매우 많거나 성능이 절대적으로 중요한 상황이 아니라면,
스트림과 람다 표현식을 사용하는 편이 장기적 유지보수에 용이하다고 생각된다
(병렬처리 차이가 있지만 현재까지 성능차이는 크게 나지 않기는 한다)
Stream의 경우, 코드가 간결하고 내부적으로 병렬처리 됨
return list.stream() //list를 stream으로 반환
.map(storeConverter::toResponse) //map메서드로 storeConverter 객체의 toResponse 메서드를 각 상점 객체에 적용
.collect(Collectors.toList()); //변환된 스트림 결과를 list로 다시 수집하여 반환
레거시 For문의 경우, 누구나 이해하기 쉽고 반복문 매부에 추가적인 처리에 용이
List<StoreResponse> responseList = new ArrayList<>();
for (Store store : list) {
StoreResponse response = storeConverter.toResponse(store);
responseList.add(response);
//Stream 사용시 객체를 불러오는 부분이 없어 디버깅에는 어려움이 존재할 수 있지만 lagacy는 디버깅 용이
}
return responseList;