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);
두 메서드는 지정된 비교자에 따라 두 원소의 최솟값(그리고 최댓값)을 반환한다.