본문 바로가기
Java

[Java] Stream.toList 와 Stream.collect(toList()) 차이에 대해서

AuctionService

자바로 프로젝트를 진행한 후 SonarLint를 사용해 코드를 분석하던 중 

"Stream.toList()" method should be used instead of "collectors" when unmodifiable list needed" 라는 주의 메시지가 떴다.

 

JDK 17 버전을 사용하여 Stream을 사용해서 List로 변환(collect) 시 

// JDK 17이전에 사용함
.collect(Collectors.toList());

대신 .toList() 메서드를 사용하라 메세지가 뜨기도 한다. 하지만 모든 경우에서 다 변경이 가능한 것이 아니므로 경우에 따라 맞게 사용해야한다.

 

.collect(toList())

  • 수정 가능, Null 값 허용

Stream.toList()

  • JDK 16버전에서 생겼다.
  • JDK 17버전에서 사용시에 UnmodifiableList를 반환하기 때문에 List 자체에 대한 변경이 불가능하고 만약 변경 혹은 수정이 일어나는 경우 예외가 발생하게 된다.
  • 수정 불가능 , Null 값 허용

collect(Collectors.toUnmodifiableList()) 와  Stream.toList() 차이

  • collect(Collectors.toUnmodifiableList()) : input list에 null 요소 허용하지 않는다
  • Stream.toList() : 허용한다.

 

레퍼런스)

 

Stream.toList로 Stream.collect(toList())를 대체해도 되는 걸까?

최근 JDK 17 release 되었고, JDK 11 다음의 LTS 버전으로서 오랫동안 지원이 되는 만큼 업무/개인프로젝트 등에서 적극적으로 사용하고 있다. Stream.toList() JDK17 기반에서 Stream을 사용해 List로 변환(collec

binux.tistory.com

'Java' 카테고리의 다른 글

[Java] 싱글톤 패턴 (Singleton pattern)  (0) 2023.10.23
[Java] 객체지향 프로그래밍  (0) 2023.10.19