diff --git a/developLog/programming-lanuage/java/effective-java/7/item-44.md b/developLog/programming-lanuage/java/effective-java/7/item-44.md
index d60bae8..4bdca1e 100644
--- a/developLog/programming-lanuage/java/effective-java/7/item-44.md
+++ b/developLog/programming-lanuage/java/effective-java/7/item-44.md
@@ -4,6 +4,8 @@
> 이로 인해 함수 객체를 매개변수로 받는 생성자와 메서드를 더 많이 작성하게 되었으며, 올바른 **함수형 인터페이스 타입**을 선택하는 것이 중요해졌다. 즉, 함수형 매개변수 타입을 올바르게 선택해야 한다.
+자바의 표준 라이브러리에서는 이미 다양한 용도의 **표준 함수형 인터페이스**가 제공되고 있으며, 이들을 활용하면 불필요하게 새로운 인터페이스를 작성하지 않고도 필요한 기능을 구현할 수 있다. 특히 `java.util.function` 패키지에는 함수형 프로그래밍을 지원하기 위해 총 43개의 함수형 인터페이스가 준비되어 있다.
+
## 1. 템플릿 메서드 패턴에서 함수형 인터페이스로 전환
과거에는 상위 클래스의 기본 메서드를 재정의하여 동작을 맞춤 설정하는 **템플릿 메서드 패턴**을 많이 사용했다. 하지만 함수형 인터페이스와 람다를 이용하면 이보다 간결하고 유지보수하기 좋은 API를 만들 수 있다.
@@ -81,14 +83,44 @@ CustomCache cache = new CustomCache<>((map, entry) -> map.size()
표준 함수형 인터페이스는 크게 다음과 같은 유형이 있다.
-| 인터페이스 | 함수 시그니처 | 설명 |
-| ------------------- | --------------------- | --------------------- |
-| `UnaryOperator` | `T apply(T t)` | 인수를 하나 받아 같은 타입을 반환 |
-| `BinaryOperator` | `T apply(T t1, T t2)` | 인수를 두 개 받아 같은 타입을 반환 |
-| `Predicate` | `boolean test(T t)` | 인수를 하나 받아 boolean을 반환 |
-| `Function` | `R apply(T t)` | 인수와 반환 타입이 다른 함수 |
-| `Supplier` | `T get()` | 인수를 받지 않고 값을 반환 |
-| `Consumer` | `void accept(T t)` | 인수를 하나 받고 값을 반환하지 않음 |
+기본적으로 자바의 함수형 인터페이스는 다음과 같은 유형으로 나뉩니다. 이 인터페이스들은 **객체 참조 타입**을 위한 기본 인터페이스들로, 실무에서 자주 활용됩니다.
+
+| 인터페이스 | 함수 시그니처 | 설명 | 사용 예시 |
+| ------------------- | --------------------- | --------------------------- | --------------------- |
+| `UnaryOperator` | `T apply(T t)` | 인수를 하나 받아 같은 타입을 반환합니다. | `String::toLowerCase` |
+| `BinaryOperator` | `T apply(T t1, T t2)` | 인수를 두 개 받아 같은 타입을 반환합니다. | `BigInteger::add` |
+| `Predicate` | `boolean test(T t)` | 인수를 하나 받아 `boolean`을 반환합니다. | `Collection::isEmpty` |
+| `Function` | `R apply(T t)` | 인수와 반환 타입이 다를 때 사용합니다. | `Arrays::asList` |
+| `Supplier` | `T get()` | 인수를 받지 않고 값을 반환합니다. | `Instant::now` |
+| `Consumer` | `void accept(T t)` | 인수를 하나 받고 반환값이 없습니다. | `System.out::println` |
+
+**예시 - `Predicate`와 `BiPredicate` 활용**
+
+`Predicate`와 `BiPredicate`는 조건을 표현하는 데 사용되며, 각각 하나 또는 두 개의 인수를 받아 `boolean`을 반환한다. 예를 들어, 특정 크기 이상일 때 캐시 항목을 삭제하도록 조건을 설정할 수 있다.
+
+```java
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.function.BiPredicate;
+
+class CustomCache extends LinkedHashMap {
+ private final BiPredicate