Stream에서 List를 반환 받는 방법으로 .toList()
와 .collect(Collectors.toList())
가 있다.
두 방법은 별차이가 없이 결국엔 List를 반환 받는것 같지만 사실 가장 큰 차이점이 존재한다.
바로
.toList()
는 불변객체이고 .collect(Collectors.toList())
는 가변 객체이다. 이 점으로 인해 큰 에러가 발생할 수 있다.
.toList()
로 반환받은 객체에 .add()
를 했을 때 불변객체는 데이터가 변경될 수 없다. 그렇기 때문에 만약 불변객체로 반환 받은 List에 add()를 하느 코드를 작성했다면 에러가 발생한다.
그런 경우에는 가변 객체를 반환해주는 .collect(Collectors.toList())
를 사용하여 리스트를 반환 받는것을 사용하고 불변 객체를 사용하는 경우에만 .toList()
를 사용하는 것이 좋을것 같다!