산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 8 함수형 인터페이스 마스터하기: 종합 가이드

함수형 인터페이스는 단일 기능을 나타냅니다. 예를 들어, 단일 메서드 compareTo를 가진 Comparable 인터페이스는 비교 목적으로 사용됩니다. Java 8은 람다 표현식에서 광범위하게 사용하기 위해 많은 함수형 인터페이스를 정의했습니다. java.util.function 패키지에 정의된 인터페이스 목록:

번호 인터페이스 및 설명
1BiConsumer<T,U> - 두 입력 인자를 받고 결과를 반환하지 않는 연산 표현
2BiFunction<T,U,R> - 두 인자를 받아 결과를 생성하는 함수 표현
3BinaryOperator<T> - 같은 타입의 두 피연산자 연산, 피연산자와 같은 타입 결과 생성
4BiPredicate<T,U> - 두 인자의 프레디케이트(불리언 값 함수) 표현
5BooleanSupplier - 불리언 값 결과 공급자
6Consumer<T> - 단일 입력 인자 받고 결과 반환하지 않는 연산
7DoubleBinaryOperator - 두 double 피연산자 연산, double 결과 생성
8DoubleConsumer - 단일 double 인자 받고 결과 반환하지 않는 연산
9DoubleFunction<R> - double 인자 받아 결과 생성하는 함수
10DoublePredicate - 단일 double 인자의 프레디케이트
11DoubleSupplier - double 값 결과 공급자
12DoubleToIntFunction - double 인자 받아 int 결과 생성
13DoubleToLongFunction - double 인자 받아 long 결과 생성
14DoubleUnaryOperator - 단일 double 피연산자 연산, double 결과 생성
15Function<T,R> - 한 인자 받아 결과 생성하는 함수
16IntBinaryOperator - 두 int 피연산자 연산, int 결과 생성
17IntConsumer - 단일 int 인자 받고 결과 반환하지 않는 연산
18IntFunction<R> - int 인자 받아 결과 생성하는 함수
19IntPredicate - 단일 int 인자의 프레디케이트
20IntSupplier - int 값 결과 공급자
21IntToDoubleFunction - int 인자 받아 double 결과 생성
22IntToLongFunction - int 인자 받아 long 결과 생성
23IntUnaryOperator - 단일 int 피연산자 연산, int 결과 생성
24LongBinaryOperator - 두 long 피연산자 연산, long 결과 생성
25LongConsumer - 단일 long 인자 받고 결과 반환하지 않는 연산
26LongFunction<R> - long 인자 받아 결과 생성하는 함수
27LongPredicate - 단일 long 인자의 프레디케이트
28LongSupplier - long 값 결과 공급자
29LongToDoubleFunction - long 인자 받아 double 결과 생성
30LongToIntFunction - long 인자 받아 int 결과 생성
31LongUnaryOperator - 단일 long 피연산자 연산, long 결과 생성
32ObjDoubleConsumer<T> - 객체값과 double 인자 받고 결과 반환하지 않는 연산
33ObjIntConsumer<T> - 객체값과 int 인자 받고 결과 반환하지 않는 연산
34ObjLongConsumer<T> - 객체값과 long 인자 받고 결과 반환하지 않는 연산
35Predicate<T> - 단일 인자의 프레디케이트(불리언 값 함수)
36Supplier<T> - 결과 공급자
37ToDoubleBiFunction<T,U> - 두 인자 받아 double 결과 생성
38ToDoubleFunction<T> - double 결과 생성하는 함수
39ToIntBiFunction<T,U> - 두 인자 받아 int 결과 생성
40ToIntFunction<T> - int 결과 생성하는 함수
41ToLongBiFunction<T,U> - 두 인자 받아 long 결과 생성
42ToLongFunction<T> - long 결과 생성하는 함수
43UnaryOperator<T> - 단일 피연산자 연산, 피연산자와 같은 타입 결과 생성

함수형 인터페이스 예제

Predicate<T> 인터페이스는 test(Object) 메서드로 불리언 값을 반환하는 함수형 인터페이스입니다. 이 인터페이스는 객체가 true 또는 false인지 테스트함을 의미합니다.

원하는 에디터로 다음 Java 프로그램 생성 (예: C:\JAVA).

Java8Tester.java

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class Java8Tester {
    public static void main(String args[]) {
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
        
        // Predicate<Integer> predicate = n -> true
        // n은 Predicate 인터페이스의 test 메서드에 매개변수로 전달
        // test 메서드는 n 값에 관계없이 항상 true 반환
        System.out.println("모든 숫자 출력:");
        eval(list, n -> true);
        
        // Predicate<Integer> predicate1 = n -> n%2 == 0
        // test 메서드는 n%2가 0이면 true 반환
        System.out.println("짝수 출력:");
        eval(list, n -> n % 2 == 0);
        
        // Predicate<Integer> predicate2 = n -> n > 3
        // test 메서드는 n이 3보다 크면 true 반환
        System.out.println("3보다 큰 숫자 출력:");
        eval(list, n -> n > 3);
    }
    
    public static void eval(List<Integer> list, Predicate<Integer> predicate) {
        for (Integer n : list) {
            if (predicate.test(n)) {
                System.out.println(n + " ");
            }
        }
    }
}

여기서 단일 입력을 받아 불리언을 반환하는 Predicate 인터페이스를 전달했습니다.

결과 검증

javac 컴파일러로 클래스 컴파일:

C:\JAVA> javac Java8Tester.java

Java8Tester 실행:

C:\JAVA> java Java8Tester

다음 출력 생성:

Print all numbers: 1 2 3 4 5 6 7 8 9
Print even numbers: 2 4 6 8
Print numbers greater than 3: 4 5 6 7 8 9

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  6. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  7. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  8. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  9. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보
  10. Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교