[Java 기능] reduce() 연산

2022. 2. 15. 13:29·Java & Kotlin

reduce() 연산

  • 정의된 연산이 아닌 프로그래머가 직접 구현한 연산
  • 최종 연산으로 스트림의 요소를 소모하며 연산을 수행
  • reduce() 메서드의 두번째 요소로 전달되는 람다식에 따라 다양한 기능을 할 수 있음
  • 람다식을 직접 구현하거나 람다식이 긴 경우 BinaryOperator를 구현한 클래스를 사용함
  • 배열의 모든 요소 합을 더하는 reduce() 연산 구현 예
Arrays.stream(arr).reduce(0, (a, b) -> a + b);	// 매개변수 초기값, 람다식

 

 

예제 코드

ReduceTest.java
package ch06;

import java.util.Arrays;
import java.util.function.BinaryOperator;

class CompareString implements BinaryOperator<String>{	// BinaryOperator를 구현한 클래스

	@Override
	public String apply(String s1, String s2) {	// apply() 추상메서드 구현
		
		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", "반갑습니다"};
		
		String str1 = Arrays.stream(greetings).reduce("", (s1,s2) -> {	// 직접 람다식 입력
		if( s1.getBytes().length >= s2.getBytes().length) return s1;
		else return s2;
		});
		System.out.println(str1);
		
		String str2 = Arrays.stream(greetings).reduce(new CompareString()).get();	// BinaryOperator 구현한 클래스 이용
		System.out.println(str2);
	}

}

 

저작자표시 비영리 변경금지 (새창열림)

'Java & Kotlin' 카테고리의 다른 글

[Java 기능] 스트림 활용  (0) 2022.02.15
[Java 기능] 스트림  (0) 2022.02.15
[Java 기능] 객체지향 프로그래밍 vs 람다식  (0) 2022.02.14
'Java & Kotlin' 카테고리의 다른 글
  • [Java 기능] 예외 처리의 개념과 필요성
  • [Java 기능] 스트림 활용
  • [Java 기능] 스트림
  • [Java 기능] 객체지향 프로그래밍 vs 람다식
Sue
Sue
개발 공부 로그
  • Sue
    Sue's devlog
    Sue
  • 전체
    오늘
    어제
    • 분류 전체보기 (122)
      • Algorithm (2)
      • WEB (8)
      • Java & Kotlin (83)
      • Spring (26)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sue
[Java 기능] reduce() 연산
상단으로

티스토리툴바