Java의 toList()에 대한 고찰

• Java11에서는 stream의 최종연산을 List로 반환하는 방법으로 Collectors.toList()와 Collectors.toUnmodifiableList() 두 가지가 있으며, 이 두 가지의 차이는 가변 List와 불변 List를 반환하는지에 있다.
• 불변 List는 List의 변경(랜덤 셔플, 정렬, 값 추가, 삭제 등)을 할 수 없으며, 이를 통해 List의 안정성을 보장할 수 있다.
• toList()는 Collector 인터페이스를 구현하며, 새로운 객체 생성, 개별 요소 추가, 두 컨테이너 병합 등의 방법을 정의합니다. 중간 연산에서 나온 값들을 addAll로 한번에 추가하는 형식을 사용합니다.
• toUnmodifiableList()는 Function<A,R> finisher가 추가되며, SharedSecrets 클래스를 통해 JVM 내부 세부 정보를 추상화하고, java.util 패키지 내의 컬렉션 클래스에 대한 추가 접근을 허용합니다. 이를 통해 내부 배열을 복사하여 새로운 불변 리스트를 만드는 것이 아니라, 이 배열에 대한 참조로부터 직접 불변 리스트를 생성하여 메모리와 성능을 향상시킵니다.

북마크
공유하기
신고하기