새로운 메서드를 추가하는데 기존에 존재하는 코드와 중복되는 부분이 많아 코드를 재사용하기 위해 BiFunction이라는 것을 사용할 수 있다는 것을 알게 되었다.
그래서 오늘은 BiFunction에 대해 알아보려고 한다.
BiFunction
BiFunction은 Java 8에서 도입된 함수형 인터페이스 중 하나로, 두 개의 입력을 받아 결과를 반환하는 함수를 모델링합니다.
BiFunction 인터페이스
인터페이스에서 T와 U는 함수의 입력 타입이고, R은 반환 타입이다.
BiFunction을 사용하는 간단한 예제 코드를 살펴보자.
BiFunction<String, String, String> biFunction = (x, y) -> x + y;
String biFunctionResult = biFunction.apply("Hello", " World!");
System.out.println(biFunctionResult);
-> Hello World!
위 코드는 BiFunction을 이용해 문자열을 결합하는 코드이다.
BiFunction인터페이스에서 입력받을 두 개의 인자 타입(String)과 반환할 타입(Stirng)을 정의해 주고 파라미터로 받아오는 인자를 어떻게 할지 정의해 줬다. (x + y)
이후 apply()메서드를 이용해서 두 문자열을 파라미터로 넘겨 결괏값을 받아왔다.
다른 예시를 살펴보자.
아래와 같은 Person 객체가 있다고 가정하자
아래 코드는 Person 객체 두 개를 생성해 두 Person의 나이를 비교해 더 나이가 많은 사람의 이름을 반환하는 코드이다.
BiFunction의 장점
- 코드의 간결성: BiFunction을 사용하면 람다 표현식을 활용해 코드를 훨씬 더 간결하게 작성할 수 있다.
- 재사용성(중복 제거): 같은 로직을 여러 번 사용해야 할 경우, BiFunction을 정의하고 재사용할 수 있다.
- 고차 함수 지원: BiFunction은 메서드의 인자로 전달되거나, 결과로 반환될 수 있는데, 이는 고차 함수를 구현하는 데 유용하며, 이를 통해 중복되는 코드를 줄여 재사용성을 높일 수 있다.
고차 함수 : 다른 함수를 인자로 받거나 결과로 함수를 반환하는 함수
'성장이야기 > TIL' 카테고리의 다른 글
EKS ERROR couldn't get current server API group list: the server has asked for the client to provide credentials (0) | 2024.03.11 |
---|---|
[개발일지] 230721 Redis Sorted Set(ZSET) (0) | 2023.07.21 |
[개발일지] 230704 no main manifest attribute error (With Manifest, jar) (0) | 2023.07.04 |
[개발일지] 230630 Spring WebClient (Mono) (0) | 2023.06.30 |
[개발일지] 230629 Spring WebFlux란? (with. Reactive programming) (0) | 2023.06.29 |