더북(TheBook)

025 두 수의 최솟값과 최댓값 계산

 

JDK 8 이하에서는 아래처럼 Math.min()Math.max() 메서드를 이용한다.

int i1 = -45;
int i2 = -15;
int min = Math.min(i1, i2);
int max = Math.max(i1, i2);

Math 클래스는 각 원시 수 타입(int, long, float, double)을 위한 min()max() 메서드를 제공한다.

JDK 8부터는 원시 수 타입의 각 래퍼 클래스(Integer, Long, Float, Double)마다 min()max()가 딸려 있고, 이러한 메서드는 내부적으로 Math 클래스로부터 각각 해당하는 메서드를 호출한다. 다음 예제를 살펴보자(좀 더 표현적이다).

double d1 = 0.023844D;
double d2 = 0.35468856D;
double min = Double.min(d1, d2);
double max = Double.max(d1, d2);

함수형 스타일에서는 BinaryOperator 함수 인터페이스를 사용한다. 이 인터페이스에는 minBy()maxBy()라는 두 메서드가 딸려 있다.

float f1 = 33.34F;
final float f2 = 33.213F;
float min = BinaryOperator.minBy(Float::compare).apply(f1, f2);
float max = BinaryOperator.maxBy(Float::compare).apply(f1, f2);

두 메서드는 지정된 비교자에 따라 두 원소의 최솟값(그리고 최댓값)을 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.