반응형
.toUnmodifiableList() 란?
.toUnmodifiableList는 자바 10부터 추가된 기능 중 하나로, java.util.stream.Stream 인터페이스에서 제공하는 메소드 중 하나입니다. 이 메소드는 스트림에서 요소를 수집하여 변경 불가능한 리스트(java.util.List)로 반환합니다. 반환된 리스트는 요소를 추가, 수정, 삭제할 수 없으므로, 불변성을 보장합니다.
다음과 같이 스트림을 생성하고, toUnmodifiableList 메소드를 호출하여 변경 불가능한 리스트를 생성할 수 있습니다.
toList() 메소드는 스트림에서 수집한 요소를 리스트로 반환합니다. 하지만 toList() 대신 toUnmodifiableList()를 호출하면, 반환된 리스트는 변경할 수 없습니다.
예제 코드
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class UnmodifiableListTest {
@Test
void unmodifiableListTest() {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toUnmodifiableList());
Assertions.assertThrows(UnsupportedOperationException.class, () -> evenNumbers.add(6));
Assertions.assertEquals(Arrays.asList(2, 4), evenNumbers);
}
}
.toUnmodifiableList 메소드로 반환된 변경 불가능한 리스트에 요소를 추가하려고 하면 UnsupportedOperationException 예외가 발생합니다.
반응형
'프로그래밍 언어 > 자바(JAVA)' 카테고리의 다른 글
자바(JAVA) - Scanner & BufferedReader (2) | 2022.01.23 |
---|---|
자바(JAVA) - Interface default & static method (0) | 2022.01.23 |
자바(JAVA) - Optional (0) | 2022.01.21 |
자바(JAVA) - 람다식(Lambda Expression) (0) | 2022.01.21 |
자바(JAVA) - 익명 클래스 (Anonymous class) (0) | 2022.01.21 |