본문 바로가기

Programming/JAVA

람다식(4) - 표준 API의 함수적 인터페이스 5 : Operator Functional Interface 2

JAVA logo image

 

 

앞선 아티클에서 Operator Functional Interface의 여러 종류를 살펴보았습니다.

 

 

 

람다식(4) - 표준 API의 함수적 인터페이스 5 : Operator Functional Interface 1

Operator 함수적 인터페이스에 대해서도 살펴보겠습니다. 사실, Operator 함수적 인터페이스의 경우 직전에 살펴보았던 Function 함수적 인터페이스와 공통점이 있습니다. 바로 추상 메서드가 applyxxx( )

nozeroslope.tistory.com

 

 

 

 

패턴 자체는 반복되고 있으므로 혹시라도 이해가 가지 않으신다면(중간에 오랜 기간 공부를 멈춰서 잊으셨다면) 아래 람다식 기본 개념을 다시 잘 숙지하시기 바랍니다. 람다식의 가장 기본 원리를 다시 상기하고 난 이후라면 반복되는 응용 패턴이기 때문에 이해하는데 크게 어려움이 없을 것입니다. 

 

 

 

람다식(1) - 람다식의 정의와 기본 문법

람다식은 익명 함수(anonymous function)를 생성하기 위한 식입니다. 이는 객체 지향 언어라기보다는, 함수 지향 언어에 가까운 성격을 갖고 있습니다. 일단 기존의 코드 작성 레이아웃과 약간의 차이

nozeroslope.tistory.com

 

 

 


 

 

일단 여기서는 Operator Functional Interface에서 설명한 인터페이스 중, IntBinaryOperator를 예시로 예제 코드를 살펴보겠습니다. 이 인터페이스의 경우 int applyAsInt(int, int)라는 추상 메서드를 갖고 있고, 설명한 것처럼 int 파라미터를 두 개 받아서 동일한 int 결과 값을 리턴하는 형태를 가지고 있습니다. 이제 이를 기반으로 람다식을 작성한다고 가정하면, 아래와 같은 형태가 되겠죠? 기본적인 형태이지만 중요한 람다식 형태이므로 잘 숙지하시기를 바랍니다. 

 

IntBinaryOperator operator = (a, b) -> { // ....; return int값; }

 

그럼 예제 코드를 아래와 같이 작성하고 살펴보도록 하겠습니다. 

 

import java.util.function.IntBinaryOperator;

public class ExampleMain {
	
	private static int[] scores = { 99, 50, 82 };
	
	public static int maxOrMin( IntBinaryOperator operator ) {
		int result = scores[0];
		for(int score : scores) {
			result = operator.applyAsInt(result, score);
		}
		return result;
	}
	
	public static void main(String[] args) {
		// 최댓값
		int max = maxOrMin(
			(a, b) -> {
				if(a >= b) {
					return a;
				} else {
					return b;
				}
			}
		);
		
		System.out.println("최댓값 : " + max);
		
		// 최솟값
		int min = maxOrMin(
			(a, b) -> {
				if(a <= b) {
					return a;
				} else {
					return b;
				}
			}
		);
		
		System.out.println("최솟값 : " + min);
	}
}


/* 출력
최댓값 : 99
최솟값 : 50
*/