본문 바로가기
프로그래밍 언어/JAVA(자바) 응용

55.연산 수행에 대한 구현 reduce() 메서드

by lroot 2022. 6. 1.
728x90
반응형

reduce() 연산

- 정의된 연산이 아닌 프로그래머가 직접 구현한 연산을 적용

T reduce(T identify, BinaryOperator<T> accumulator)

- 최종 연산으로 스트림의 요소를 소모하며 연산을 수행

- 배열의 모든 요소의 합을 구하는 reduce() 연산 구현 예

Arrays.stream(arr).reduce(0, (a,b) -> a+b));

- reduce() 메서드의 두 번째 요소로 전달되는 람다식에 따라 다양한 기능을 수행할 수 있음

- 람다식을 직접 구현하거나 람다식이 긴 경우 BinaryOperator를 구현한 클래스를 사용함

 

BinaryOperator를 구현하여 배열에 여러 문자열이 있을 때 길이가 가장 긴 문자열 찾기 예

- CompareString.java

class CompareString implements BinaryOperator<String>{

@Override
public String apply(String s1, String s2) {
if(s1.getBytes().length >= s2.getBytes().length ) return s1;
else return s2;
}
}

public class ReduceTest {

public static void main(String[] args) {

String greetings[] = {"안녕하세요","hello","Good morning","반갑습니다"};

System.out.println(Arrays.stream(greetings).reduce("",(s1,s2)->
{if(s1.getBytes().length >= s2.getBytes().length ) return s1;
else return s2;}
));

String str = Arrays.stream(greetings).reduce(new CompareString()).get();
System.out.println(str);
}

}

댓글