Predicate 인터페이스는 자바에서 주어진 인자에 대한 조건을 평가하는 함수형 인터페이스입니다. Predicate를 이용하면 주어진 조건을 만족하는지 여부를 판단하는 함수를 정의할 수 있습니다. Predicate의 and, or, negate 등의 메서드를 이용하면 여러 개의 Predicate를 조합하여 더 복잡한 조건을 만들 수 있습니다.
1. and 메서드
and 메서드는 현재 Predicate와 다른 Predicate를 논리적 AND로 결합하여 새로운 Predicate를 생성합니다.
Predicate<Integer> greaterThanTen = x -> x > 10;
Predicate<Integer> lessThanTwenty = x -> x < 20;
Predicate<Integer> betweenTenAndTwenty = greaterThanTen.and(lessThanTwenty);
boolean result = betweenTenAndTwenty.test(15); // true (15는 10보다 크고 20보다 작음)
2. or 메서드
or 메서드는 현재 Predicate와 다른 Predicate를 논리적 OR로 결합하여 새로운 Predicate를 생성합니다.
Predicate<Integer> lessThanFive = x -> x < 5;
Predicate<Integer> greaterThanFifteen = x -> x > 15;
Predicate<Integer> outsideRange = lessThanFive.or(greaterThanFifteen);
boolean result = outsideRange.test(10); // false (10은 5보다 크고 15보다 작지 않음)
3. negate 메서드
negate 메서드는 현재 Predicate의 논리적인 부정을 나타내는 새로운 Predicate를 생성합니다.
Predicate<String> isEmpty = String::isEmpty;
Predicate<String> isNotEmpty = isEmpty.negate();
boolean result = isNotEmpty.test("Hello"); // true (문자열이 비어있지 않음)
이러한 메서드들을 이용하여 Predicate를 결합하면 복잡한 조건을 표현할 수 있습니다. 이것은 주로 컬렉션의 데이터를 조건에 따라 필터링할 때나 다양한 검증 로직을 조합하여 사용할 때 유용합니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 스트림 만들기 (0) | 2023.11.23 |
---|---|
자바 스트림(stream) (0) | 2023.11.22 |
자바 Function의 합성 (0) | 2023.11.22 |
자바 java.util.function패키지 (0) | 2023.11.22 |
자바 함수형 인터페이스 (0) | 2023.11.22 |