상세 컨텐츠

본문 제목

[Stream] 스트림 커스텀 집계 reduce

Java

by kwanghyup 2020. 6. 18. 12:53

본문

1. public final OptionalInt reduce(IntBinaryOperator op)

import java.util.Arrays;
import java.util.List;
import java.util.function.IntBinaryOperator;

public class ReduceExam {

    public static void main(String[] args) {
        List<Person> list = Arrays.asList(
                new Person("hong",99),
                new Person("park",82),
                new Person("lee",87),
                new Person("kim",77)
        );

        // XXXBinaryOperator - applyAsXXX
        int sum = list.stream().mapToInt(Person::getScore).reduce(new IntBinaryOperator() {
            @Override
            public int applyAsInt(int left, int right) {
                return (left + right)+300; // 객체들의 총합에 300을 더함 
            }
        }).getAsInt(); 
        System.out.println(sum);
    }
}

 

람다식 

int sum = list.stream().mapToInt(Person::getScore)
                .reduce((left, right) -> (left + right)+300).getAsInt();
        System.out.println(sum);

 

 

2. public final int reduce(int identity, IntBinaryOperator op)

import java.util.ArrayList;
import java.util.List;

public class ReduceExam {

    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();

        int sum = list.stream().mapToInt(Person::getScore)
                .reduce(0,(left, right) -> (left + right) + 50 );
        //반환형 : int, getAsInt()할 필요 없음 
        // identity : 누적 함수의 항등값
        System.out.println(sum);
    }
}

관련글 더보기

댓글 영역