Open
Description
📌 함수형 인터페이스 정리
제목: [자바] 함수형 인터페이스 정리
🔍 주제 설명
- 주제 요약: Java8에서 도입된 함수형 인터페이스의 정의, 주요 메서드, 활용 예제를 정리합니다.
- 주요 개념:
Function<T, R>
Predicate<T>
Consumer<T>
Supplier<T>
UnaryOperator<T>
BinaryOperator<T>
💻 예제 코드
1. Function<T, R>
[입력을 변환하여 반환]
입력값 T를 받아 변환된 값(R)을 반환하는 함수형 인터페이스입니다.
apply(T t) 메서드로 변환 로직을 실행하게 됩니다.
import java.util.function.Function;
public class FunctionExample {
public static void main(String[] args) {
Function<String, Integer> stringLength = s -> s.length();
System.out.println("Length of 'Hello': " + stringLength.apply("Hello")); // 출력: 5
}
}
2. Predicate
[조건 평가]
입력값 T를 받아 조건을 평가하고 결과를 boolean으로 반환합니다.
test(T t) 메서드를 통해 조건을 평가하고 boolean을 반환합니다.
import java.util.function.Predicate;
public class PredicateExample {
public static void main(String[] args) {
// Predicate<T> 정의: Integer 타입의 입력값이 짝수인지 평가
Predicate<Integer> isEven = n -> n % 2 == 0;
// 숫자 4가 짝수인지 확인
System.out.println("Is 4 even? " + isEven.test(4)); // 출력: true
}
}
3.Consumer
[입력값 처리]
입력값 T를 받아 처리하며 반환값이 없습니다.
�accept(T t) 메서드를 통해 작업을 수행합니다.
import java.util.function.Consumer;
public class ConsumerExample {
public static void main(String[] args) {
// Consumer<T> 정의: String 입력값을 출력
Consumer<String> printer = s -> System.out.println("Message: " + s);
// "Hello, World!" 메시지를 출력
printer.accept("Hello, World!"); // 출력: Message: Hello, World!
}
}
4. Supplier
[값 생성 후 반환]
입력값 없이 결과값(T)를 생성하고 반환합니다.
get() 메서드를 통해 결과값을 반환합니다.
import java.util.function.Supplier;
public class SupplierExample {
public static void main(String[] args) {
// Supplier<T> 정의: Double 타입의 난수를 반환
Supplier<Double> randomValue = () -> Math.random();
// 난수를 생성하여 출력
System.out.println("Random value: " + randomValue.get());
}
}
5. UnaryOperator
[같은 타입의 값을 변환]
입력값과 반환값이 같은 타입인 Function<T, T>의 특수한 형태입니다.
apply(T t) 메서드를 통해 변환 로직을 수행합니다.
import java.util.function.UnaryOperator;
public class UnaryOperatorExample {
public static void main(String[] args) {
// UnaryOperator<T> 정의: Integer 입력값의 제곱 반환
UnaryOperator<Integer> square = n -> n * n;
// 숫자 5의 제곱 계산
System.out.println("Square of 5: " + square.apply(5)); // 출력: 25
}
}
6. BinaryOperator
[같은 타입의 두 입력값을 연산]
두 개의 같은 타입의 값을 받아서 같은 타입의 결과를 반환하는 BiFunction<T, T, T>의 특수한 형태입니다.
apply(T t1, T t2) 메서드를 통해 연산을 수행합니다.
import java.util.function.BinaryOperator;
public class BinaryOperatorExample {
public static void main(String[] args) {
// BinaryOperator<T> 정의: Integer 타입 두 숫자를 더함
BinaryOperator<Integer> add = (a, b) -> a + b;
// 숫자 3과 5의 합 계산
System.out.println("Sum of 3 and 5: " + add.apply(3, 5)); // 출력: 8
}
}