ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 람다와 스트림 - java.util.function - part2
    백엔드/자바 2021. 8. 25. 14:44
     

    람다와 스트림 - java.util.function - part1

    이전 람다 파트에선 람다란 무엇인지, 람다를 사용하기 위한 방법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표

    sgcomputer.tistory.com

     

    이전 파트에선 함수형 인터페이스를 쉽게 사용할 수 있게 만든 패키지 java.util.function에 대해 알아봤다.

     

    이번 파트에서는 추가적으로 유용하게 쓸 수 있는 함수형 인터페이스에 대해서 알아보자.

     

    매개변수가 두 개인 함수형 인터페이스


    함수형 인터페이스


    메서드


    설명


    BiConsumer < T, U >

    void accept ( T t, U u )
    두 개의 매개 변수만 있고, 반환값이 없음


    BiPredicate < T, U >

    boolean test ( T t, U u )
    조건식을 표현하는데 사용됨.

    매개 변수는 둘, 반환값은 boolean.


    BiFunction < T, U, R >

    R apply( T t, U u )
    두 개의 매개변수를 받아서 하나의 결과 반환

     

    위의 인터페이스들은 이전 파트와 달리 두 개의 매개 변수를 받을 수 있는 인터페이스들이다.

     

    근데 자세히 보면 이름이 낯익다.

     

    기존의 한 개의 매개 변수만 받는 인터페이스들에 "Bi"라는 접두사만 붙여준 것이기 때문이다.

     

    즉 파트 1에서 익혔던 인터페이스들과 기능은 같지만, 매개 변수만 두 개인 것이다.

     

    함수형 인터페이스 - BiConsumer<T, U>

     

    BiConsumer의 사용법과 성격이 Consumer와 동일하다.

     

    매개 변수는 있지만, 반환값이 없는 인터페이스로,

     

    다만 차이라면 매개변수에 두 개가 들어가기 때문에 지네릭스로 매개변수 타입을 두개 적어줘야 한다.

     

    예시에서는 Integer와 String이 서로 짝지어서 사용되었지만, Integer와 String 등 다양한 조합이 가능하다.

     

    당연하지만 타입이 다를 경우 람다식 안에서 이에 대한 처리를 해줘야 한다.

     

    함수형인터페이스 - BiPredicate<T, U>

     

    BiPredicate의 사용법과 성격은 Predicate와 동일하다. 다만 매개 변수가 두개라는 점이 다를 뿐이다.

     

    당연할 수도 있지만 이때 알아두면 좋은 점은 두 가지다.

     

    하나는 bp1처럼 매개 변수가 두 개여도 그 중에서 하나만 사용해서 조건을 따져도 상관 없다는 점.

     

    다른 하나는 bp2처럼 연산자를 사용하여 두 개의 조건을 동시에 판단이 가능하다는 점이다.

     

    함수형 인터페이스 - BiFunction< T, U, R >

     

    BiFunction은 기존 Function에 매개변수가 2개로 변한 인터페이스다.

     

    당연히 매개변수가 2개라 지네릭스로 매개변수 2개의 타입 + 반환 타입 1개 총 3개의 타입을 써야한다.

     

    다른 Bi 인터페이스처럼 매개변수 타입 두개를 통일할 필요는 없다.

     

    하지만 위 코드처럼 타입이 다르면 람다식으로 처리를 해야한다.

     

    매개변수와 반환 타입이 동일한 인터페이스

    함수형 인터페이스 메서드 설명

    UnaryOperator<T>


    T apply( T t )


    Function의 자손. Function과 달리

    매개변수와 결과의 타입이 같다.


    BinaryOperator<T>


    T apply( T t, T t )


    BiFunction의 자손. BiFunction과

    달리 매개변수와 결과의 타입이 같다.

     

    함수형 인터페이스 - UnaryOperator <T>

    매개 변수와 반환 값의 타입이 같을 때 사용한다.

     

    Function의 자손으로서 매개변수 하나만 있어도 사용이 가능하다.

     

    함수형 인터페이스 - BinaryOperator <T>

    매개 변수와 반환 값의 타입이 같을 때 사용한다.

     

    UnaryOperator와 달리 매개 변수는 두 개가 필요하다.

     

Designed by Tistory.