수정 불가능한 컬렉터
stream.toList()로 수정 불가능한 리스트에 직접 수집합니다.
코드 비교
✕ Java 8
List<String> list = stream.collect(
Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
)
);
✓ Java 16+
List<String> list = stream.toList();
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
가장 짧은 형태
stream.toList()는 collect()나 Collectors 임포트가 전혀 필요 없습니다.
불변
결과를 수정할 수 없어 우발적인 변경을 방지합니다.
가독성
스트림 파이프라인의 터미널 단계로 자연스럽게 읽힙니다.
이전 방식
collectingAndThen
모던 방식
stream.toList()
JDK 버전
16
난이도
중급
JDK 지원
수정 불가능한 컬렉터
사용 가능
JDK 16 (2021년 3월) 이후 널리 사용 가능
동작 원리
Java 10에서 toUnmodifiableList(), toUnmodifiableSet(), toUnmodifiableMap()이 추가되어 장황한 collectingAndThen 래퍼를 대체했습니다. 리스트의 경우 Java 16의 stream.toList()가 더 간단한 대안을 제공합니다 — collect() 호출 자체가 필요 없습니다. 다른 컬렉션 타입에는 toUnmodifiableSet()과 toUnmodifiableMap()을 사용하세요.
관련 문서