기본형을 사용하는 함수형인터페이스
앞서 알아본 함수형인터페이스는 매개변수와 반환값이 모두 지네릭 타입이었다.
기본형타입을 사용하게 될떄도 Wrapper 클래스를 사용하게되는데, 이 비효율적인 처리를 기본형을 사용하는 함수형 인터페이스로 해결할 수 있다.
import java.util.function.Function;
public class Main {
public static void main(String[] args) {
Function<Integer, Integer> squareFunction = num -> {
Integer result = num * num; // Wrapper 클래스 사용
return result;
};
int number = 5;
Integer squared = squareFunction.apply(number); // Wrapper 클래스 사용
System.out.println("Squared value: " + squared);
}
}
import java.util.function.IntUnaryOperator;
public class Main {
public static void main(String[] args) {
//IntUnaryOperator는 기본형 int 값을 입력으로 받아들이고, int 값을 반환하는 함수형 인터페이스
IntUnaryOperator squareFunction = num -> num * num; // 기본형 사용
int number = 5;
int squared = squareFunction.applyAsInt(number); // 기본형 사용
System.out.println("Squared value: " + squared);
}
}
https://standout.tistory.com/1433
https://standout.tistory.com/1393
https://standout.tistory.com/1438
https://standout.tistory.com/1439
https://standout.tistory.com/1440
https://standout.tistory.com/1441
기본형을 사용하는 함수형 인터페이스는 여러가지가 있다.
IntUnaryOperator: int 값을 입력으로 받아서 int 값을 반환하는 함수.
LongUnaryOperator: long 값을 입력으로 받아서 long 값을 반환하는 함수.
DoubleUnaryOperator: double 값을 입력으로 받아서 double 값을 반환하는 함수.
IntConsumer: int 값을 입력으로 받아서 작업을 수행하는 함수.
LongConsumer: long 값을 입력으로 받아서 작업을 수행하는 함수.
DoubleConsumer: double 값을 입력으로 받아서 작업을 수행하는 함수.
IntSupplier: int 값을 제공하는 함수.
LongSupplier: long 값을 제공하는 함수.
DoubleSupplier: double 값을 제공하는 함수.
IntPredicate: int 값을 입력으로 받아서 불리언 값을 반환하는 함수.
LongPredicate: long 값을 입력으로 받아서 불리언 값을 반환하는 함수.
DoublePredicate: double 값을 입력으로 받아서 불리언 값을 반환하는 함수.
IntFunction<R>: int 값을 입력으로 받아서 제네릭 타입 R을 반환하는 함수.
LongFunction<R>: long 값을 입력으로 받아서 제네릭 타입 R을 반환하는 함수.
DoubleFunction<R>: double 값을 입력으로 받아서 제네릭 타입 R을 반환하는 함수.
IntToLongFunction: int 값을 입력으로 받아서 long 값을 반환하는 함수.
IntToDoubleFunction: int 값을 입력으로 받아서 double 값을 반환하는 함수.
LongToIntFunction: long 값을 입력으로 받아서 int 값을 반환하는 함수.
LongToDoubleFunction: long 값을 입력으로 받아서 double 값을 반환하는 함수.
DoubleToIntFunction: double 값을 입력으로 받아서 int 값을 반환하는 함수.
DoubleToLongFunction: double 값을 입력으로 받아서 long 값을 반환하는 함수.
ObjIntConsumer<T>: 객체와 int 값을 입력으로 받아서 작업을 수행하는 함수.
ObjLongConsumer<T>: 객체와 long 값을 입력으로 받아서 작업을 수행하는 함수.
ObjDoubleConsumer<T>: 객체와 double 값을 입력으로 받아서 작업을 수행하는 함수.
위에서 살펴본 IntUnaryOperator 제외, 추가로 몇개 더 살펴보자.
DoubleToIntFunction
`applyAsInt(double value)` 메서드를 호출하여 double 값을 입력으로 받아 int로 변환하는 함수형 인터페이스
import java.util.function.DoubleToIntFunction;
public class Main {
public static void main(String[] args) {
// DoubleToIntFunction을 이용하여 double 값을 int로 변환하는 예시
DoubleToIntFunction converter = value -> (int) value;
// DoubleToIntFunction에 double 값을 전달하여 변환
int result = converter.applyAsInt(3.5);
System.out.println("Converted value: " + result);
}
}
[출력결과]
Converted value: 3
ToIntFunction<T>
`applyAsInt(T value)` 메서드를 호출하여 제네릭 타입 T를 입력으로 받아서 해당 객체를 정수로 변환하는 함수형 인터페이스
import java.util.function.ToIntFunction;
public class Main {
public static void main(String[] args) {
// ToIntFunction을 이용하여 문자열의 길이를 반환하는 예시
ToIntFunction<String> lengthCalculator = str -> str.length();
// ToIntFunction에 문자열을 전달하여 길이를 계산
int length = lengthCalculator.applyAsInt("Hello");
System.out.println("Length of the string: " + length);
}
}
[출력결과]
Length of the string: 5
IntFunction<R>
`apply(int value)` 메서드를 호출하여 int 값을 입력으로 받아서 해당 값을 다른 형식으로 변환하는 함수형 인터페이스
import java.util.function.IntFunction;
public class Main {
public static void main(String[] args) {
// IntFunction을 이용하여 int 값을 문자열로 변환하는 예시
IntFunction<String> intToString = num -> String.valueOf(num);
// IntFunction에 int 값을 전달하여 문자열로 변환
String convertedString = intToString.apply(10);
System.out.println("Converted string: " + convertedString);
}
}
[출력결과]
Converted string: 10
ObjIntConsumer<T>
`accept(T obj, int value)` 메서드를 호출하여 제네릭 타입 T와 int 값을 입력으로 받아서 그에 맞는 작업을 수행하는 함수형 인터페이스
import java.util.function.ObjIntConsumer;
public class Main {
public static void main(String[] args) {
// ObjIntConsumer을 이용하여 문자열과 숫자를 연결하여 출력하는 예시
ObjIntConsumer<String> stringNumberPrinter = (str, num) -> System.out.println(str + num);
// ObjIntConsumer에 문자열과 숫자를 전달하여 출력
stringNumberPrinter.accept("The number is ", 10);
}
}
[출력결과]
The number is 10