Java의 Reduce()
Java의 reduce() 연산은 프로그래머가 정의한 연산을 스트림의 요소에 적용합니다.
T reduce(T identity, BinaryOperator<T> accumulator)
reduce()
메서드의 두 번째 인수는 람다 식 또는 작업을 지정하는BinaryOperator
구현 클래스입니다.- reduce() 작업은 최종 작업이 호출될 때 수행되며 스트림의 요소를 소비합니다.
- reduce() 작업의 결과는 두 번째 인수로 전달된 람다 식 또는
BinaryOperator
구현 클래스에 의해 결정됩니다.
예: reduce()
작업을 사용하여 배열에 있는 모든 요소의 합을 찾습니다.
Arrays.stream(arr).reduce(0, (a,b)->a+b);
reduce()
메서드의 두 번째 인수는 (a,b) -> a+b
두 값 a
와 b
를 더하고 결과를 반환하는 람다 식 (a,b) -> a+b
입니다.
또한 reduce()
메서드의 두 번째 인수로 전달되는 람다 식은 더 복잡한 작업을 위해 BinaryOperator
구현 클래스로 대체될 수 있습니다.
이 경우 문자열 배열에서 가장 긴 문자열을 찾기 위해 BinaryOperator<String>
인터페이스를 구현합니다
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;
}
}
이 클래스를 reduce()
메서드의 두 번째 인수로 사용하여 문자열 배열에서 가장 긴 문자열을 찾을 수 있습니다.
String[] greetings = {"안녕하세요~~~", "hello", "Good morning", "반갑습니다^^"};
Arrays.stream(greetings).reduce(new CompareString()).get();
위의 예에서 reduce()
작업은 CompareString
클래스를 사용하여 문자열 배열에서 가장 긴 문자열을 찾습니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
Java의 로그 남기기 - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.03 |
---|---|
Java의 예외처리 - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.03 |
Stream (0) | 2023.05.02 |
Java의 Lambda - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.02 |
Java의 내부 클래스 - 🐥 카카오 테크 캠퍼스 (0) | 2023.05.02 |