Java - functional stream - reduce

최대 1 분 소요

Java - reduce

  • reduce는 list 내의 원소들에 대해서 binary 연산은 순차적으로 수행하도록 해주는 것을 말하죠.

import java.util.stream.IntStream;

class Main {
    public static void main(String[] args) throws Exception {
        // 1 + 2, 2 + 3, 5 + 4 와 같은 순으로 연산이 이어지죠.
        // reduce의 경우 초기값(identity)가 없는 경우 Optional로 리턴됩니다.
        // 따라서, 여기서 값을 끄집어내고 싶다면, get, orElse를 사용하면 되죠.
        int plusSum = IntStream.range(1, 100)
                .reduce((x1, x2) -> x1 + x2).orElse(1111);
        System.out.println(plusSum); // 4950

        // 위랑 비슷하지만,
        // 이번에는 초기 값을 2로 넣어줍니다.
        // 그 다음, 2 * 3, 6 * 4 로 연산이 진행되죠.
        int factorial = IntStream.range(3, 5)
                .reduce(2, (x1, x2) -> x1 * x2 );
        System.out.println(factorial);
    }
}

댓글남기기