자바로 프로젝트를 진행한 후 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 |