We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
책 초반 부에서 나오는 reduce 와 collect 부분에서 비슷한 연산을 수행할 수 있지만 어떤 차이가 있을까?
collect의 내부적으로 reduce 연산이 된다고 하는데 어떤 차이가 있을까?
The text was updated successfully, but these errors were encountered:
reduce는 두 값을 하나로 도출하는 불변형 연산이다.
reduce
Optional<T> reduce(BinaryOperator<T> accumulator);
<U> U reduce(U identity, BiFunction<U, ? super T, U> accumulator, BinaryOperator<U> combiner);
반면 collect는 도출하려는 결과를 누적하는 컨테이너를 바꾸도록 설계되어 있는 가변 연산이다.
collect
<R> R collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner);
여기서 알 수 있는 점은 accumulator가 다르다는 것이다. Reduce : BiFunction Collect: BiConsumer
Reduce : BiFunction
Collect: BiConsumer
BiFunction은 return 값이 존재하기 때문에 두 개의 인수값을 기준으로 새로운 객체를 생성하는 방식이다.
BiFunction
이는 마치 불변 객체를 만드는 방식과 비슷하다. 즉 reduce 메서드를 이용하게 된다면 불변 객체를 만드는 방식으로 연산이 진행된다는 점이다.
BiConsumer는 return 값이 void이기 때문에 내부에서 가변 컨테이너가 존재하고, 이 컨테이너가 변하고 있다는 것이다.
BiConsumer
이 두 가지의 방식이 차이점을 내고 있다. 따라서 만약에 책과 같이 toList를 해주는 연산을 reduce로 진행하게 된다면 매번 새로운 list를 생성하게 되므로 성능적으로 저하가 발생할 것이다.
toList
list
Sorry, something went wrong.
yh20studio
No branches or pull requests
문제
책 초반 부에서 나오는 reduce 와 collect 부분에서 비슷한 연산을 수행할 수 있지만 어떤 차이가 있을까?
선정 배경
collect의 내부적으로 reduce 연산이 된다고 하는데 어떤 차이가 있을까?
관련 챕터
The text was updated successfully, but these errors were encountered: