ArrayList를 반환한다.
수정이 가능하다.Null을 허용한다.Java8 버전에서 나왔다.@DisplayName("Collectors.toList() 수정 가능 테스트")
@Test
public void collectorsToList() {
List<String> modifiable = Stream.of("a", "b")
.collect(Collectors.toList());
modifiable.add("c");
assertEquals(3, modifiable.size());
}
수정 불가능한 List를 반환하기 위해 등장했다.Null을 허용하지 않는다.
- Null이 들어가면 `Null Pointer Exception`이 발생한다.
Java10 버전에서 나왔다.@DisplayName("Collectors.toUnmodifiableList() 수정 불가능 테스트")
@Test
public void collectorsToUnmodifiableList() {
List<String> collectorsToUnmodifiableList = Stream.of("a", "b")
.collect(Collectors.toUnmodifiableList());
assertThrows(UnsupportedOperationException.class,
() -> collectorsToUnmodifiableList.add("c"));
}
Collectors.toUnmodifiableList()에 “c”를 추가하려하면 UnsupportedOperationException이 발생한다.

UnsupportedOperationException.class 예외가 발생한다.Null을 허용한다.Java16 버전에서 나왔다.@DisplayName("Stream.toList() 수정 불가능 테스트")
@Test
public void streamToList() {
List<String> streamToList = Stream.of("a", "b").toList();
assertThrows(UnsupportedOperationException.class,
() -> streamToList.add("c"));
}
Stream.toList()에 “c”를 추가하려하면 UnsupportedOperationException이 발생한다.

| Collectors.toList() | Collectors.toUnmodifiableList() | Stream.toList() | |
|---|---|---|---|
| 수정 가능한지? | 수정 가능 | 수정 불가능 | 수정 불가능 |
| 리스트 안에 Null 추가 가능한지? | Null 가능 | Null 불가능 (UnsupportedOperationException) | Null 가능 |
| 도입된 Java 버전 | Java 8 | Java 10 | Java 16 |
https://velog.io/@cieroyou/Stream을-List로-변환하는-다양한-방법과-차이Collectors.toList-vs-Stream.toList