본문 바로가기

Backend

JAVA Stream map().collect() vs map().toList()의 차이

 

팀원들과 코드리뷰를 하던 도중, stream().map 이후에 .collect해 list로 변환하고 있는것을 발견했다.

나는 평소에 toList()를 사용하고 있었는데, 두 방식 사이에 성능 차이가 있다고 알고 있었기 때문에 리뷰를 진행했다.

 

하지만 진짜 차이는 toList()는 immutable(불변)객체를 리턴하는것이고, collect()는 mutable 객체를 리턴하는 것이다.

비즈니스 로직 관점에서, repository에서 select한 데이터 리스트를 add하거나 sort해서 변경을 추가하는 것을 막기 위해(다른 팀원들이 해당 서비스를 사용할 때) 사용해볼 수 있을 것 같다.

* immutable 객체에 데이터를 넣거나 변경하려고 하면 UnsupportedOperationException이 발생한다.