본문 바로가기
회고/TIL

[TIL] 2025.12.19

by 세류오 2025. 12. 20.

collect(Collectors.toList())와 toList()

자바 Stream API를 사용하면서 알게 된 내용을 정리

.collect(Collectors.toList()) -> Java 8부터 사용가능, 수정 가능한 리스트에 사용
.toList() -> Java16부터 사용가능, 수정 불가능한 리스트에 사용


사용 예제 코드

List<Integer> list1 = stream.collect(Collectors.toList());
List<Integer> list2 = stream.toList();

두가지의 차이점은 수정 가능 여부가 크다

List<String> list = stream.collect(Collectors.toList());
list.add("new");   // ✅ 가능

List<String> list = stream.toList();
list.add("new");   // ❌ UnsupportedOperationException

그렇다면 언제 무엇을 선택해서 사용해야하는가?

toList()를 사용하는경우

  • 조회 결과를 반환
  • DTO리스트를 반환
  • Kafka/API/Service결과
  • 결과로 사용하고 수정하지 않을 리스트

collect(Collectors.toList())를 사용하는경우

  • 사용 이후 add, remove를 할 예정일 때
  • 반환되는 리스트를 조작해야하는 경우
  • 자바 버전이 8~15환경일 때

결론
리스트를 수정할 일이 없고 자바 버전이 16이상일 경우 .toList()를 사용하자

'회고 > TIL' 카테고리의 다른 글

[TIL] 2025.12.25 TDD에 대한 학습  (0) 2025.12.26
[TIL] 2025.12.18  (0) 2025.12.18
[TIL] 2025.12.10  (0) 2025.12.10
[TIL] 2025.09.30 화요일  (0) 2025.10.01