-
람다와 스트림 - java.util.function - part2백엔드/자바 2021. 8. 25. 14:44
이전 파트에선 함수형 인터페이스를 쉽게 사용할 수 있게 만든 패키지 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와 달리 매개 변수는 두 개가 필요하다.
'백엔드 > 자바' 카테고리의 다른 글
람다와 스트림 - Predicate의 결합 (0) 2021.09.01 람다와 스트림 - 함수의 결합 (0) 2021.08.25 람다와 스트림 - java.util.function - part1 (0) 2021.08.24 람다와 스트림 - 람다식의 활용 (0) 2021.08.24 람다와 스트림 - 함수형 인터페이스 (0) 2021.08.24