SeouliteLab
[Java/자바] 다수의 Predicate를 or()로 연결하여 수행하기 본문
Java에서는 Predicate의 or() 메서드를 사용하여 다수의 Predicate를 연결하고, 하나 이상의 조건이 true이면 true를 반환합니다. 이를 통해 여러 조건 중 하나라도 충족되는지 검사할 수 있습니다.
1. Predicate.or() 메서드 소개
Predicate.or() 메서드는 Predicate 인터페이스의 디폴트 메서드로, 현재 Predicate와 다른 Predicate를 or 연산하여 새로운 Predicate를 생성합니다.
2. Predicate.or() 메서드 예제
예제 1: 숫자가 음수이거나 홀수인지 확인하기
import java.util.function.Predicate;
public class NegativeOrOddNumberCheck {
public static void main(String[] args) {
Predicate<Integer> isNegative = num -> num < 0;
Predicate<Integer> isOdd = num -> num % 2 != 0;
Predicate<Integer> isNegativeOrOdd = isNegative.or(isOdd);
System.out.println(isNegativeOrOdd.test(-3)); // true 출력
System.out.println(isNegativeOrOdd.test(2)); // false 출력
System.out.println(isNegativeOrOdd.test(5)); // true 출력
}
}
위 예제에서는 숫자가 음수이거나 홀수인지 확인하는 Predicate를 만들기 위해 isNegative와 isOdd 두 개의 Predicate를 or() 메서드로 연결합니다.
예제 2: 문자열이 공백이거나 null인지 확인하기
import java.util.function.Predicate;
public class NullOrEmptyStringCheck {
public static void main(String[] args) {
Predicate<String> isNullOrEmpty = str -> str == null || str.trim().isEmpty();
System.out.println(isNullOrEmpty.test(null)); // true 출력
System.out.println(isNullOrEmpty.test("")); // true 출력
System.out.println(isNullOrEmpty.test("Hello")); // false 출력
}
}
위 예제에서는 문자열이 공백이거나 null인지 확인하는 Predicate를 만들기 위해 isNullOrEmpty 하나의 Predicate만을 사용합니다.
예제 3: 숫자가 3의 배수이거나 5의 배수인지 확인하기
import java.util.function.Predicate;
public class MultipleOfThreeOrFiveCheck {
public static void main(String[] args) {
Predicate<Integer> isMultipleOfThree = num -> num % 3 == 0;
Predicate<Integer> isMultipleOfFive = num -> num % 5 == 0;
Predicate<Integer> isMultipleOfThreeOrFive = isMultipleOfThree.or(isMultipleOfFive);
System.out.println(isMultipleOfThreeOrFive.test(9)); // true 출력
System.out.println(isMultipleOfThreeOrFive.test(10)); // true 출력
System.out.println(isMultipleOfThreeOrFive.test(7)); // false 출력
}
}
위 예제에서는 숫자가 3의 배수이거나 5의 배수인지 확인하는 Predicate를 만들기 위해 isMultipleOfThree와 isMultipleOfFive 두 개의 Predicate를 or() 메서드로 연결합니다.
예제 4: 사용자가 관리자 또는 슈퍼유저인지 확인하기
import java.util.function.Predicate;
public class AdminOrSuperuserCheck {
public static void main(String[] args) {
Predicate<User> isAdmin = user -> user.getRole().equals("admin");
Predicate<User> isSuperuser = user -> user.getRole().equals("superuser");
Predicate<User> isAdminOrSuperuser = isAdmin.or(isSuperuser);
User user1 = new User("John", "admin");
User user2 = new User("Alice", "superuser");
User user3 = new User("Bob", "user");
System.out.println(isAdminOrSuperuser.test(user1)); // true 출력
System.out.println(isAdminOrSuperuser.test(user2)); // true 출력
System.out.println(isAdminOrSuperuser.test(user3)); // false 출력
}
static class User {
private String name;
private String role;
public User(String name, String role) {
this.name = name;
this.role = role;
}
public String getRole() {
return role;
}
}
}
위 예제에서는 사용자가 관리자 또는 슈퍼유저인지 확인하는 Predicate를 만들기 위해 isAdmin와 isSuperuser 두 개의 Predicate를 or() 메서드로 연결합니다.
예제 5: 사용자가 어린이 또는 청소년인지 확인하기
import java.util.function.Predicate;
public class ChildOrTeenagerCheck {
public static void main(String[] args) {
Predicate<Integer> isChild = age -> age < 12;
Predicate<Integer> isTeenager = age -> age >= 12 && age < 20;
Predicate<Integer> isChildOrTeenager = isChild.or(isTeenager);
System.out.println(isChildOrTeenager.test(8)); // true 출력
System.out.println(isChildOrTeenager.test(15)); // true 출력
System.out.println(isChildOrTeenager.test(25)); // false 출력
}
}
위 예제에서는 사용자가 어린이 또는 청소년인지 확인하는 Predicate를 만들기 위해 isChild와 isTeenager 두 개의 Predicate를 or() 메서드로 연결합니다.
예제 6: 나이가 65세 이상이거나 은퇴한 사용자인지 확인하기
import java.util.function.Predicate;
public class RetiredOrSeniorCheck {
public static void main(String[] args) {
Predicate<Integer> isSenior = age -> age >= 65;
Predicate<User> isRetired = user -> user.isRetired();
Predicate<User> isRetiredOrSenior = isSenior.or(isRetired);
User user1 = new User("John", 70, true);
User user2 = new User("Alice", 55, false);
System.out.println(isRetiredOrSenior.test(user1)); // true 출력
System.out.println(isRetiredOrSenior.test(user2)); // true 출력
}
static class User {
private String name;
private int age;
private boolean retired;
public User(String name, int age, boolean retired) {
this.name = name;
this.age = age;
this.retired = retired;
}
public boolean isRetired() {
return retired;
}
}
}
위 예제에서는 나이가 65세 이상이거나 은퇴한 사용자인지 확인하는 Predicate를 만들기 위해 isSenior와 isRetired 두 개의 Predicate를 or() 메서드로 연결합니다.
'프로그래밍' 카테고리의 다른 글
Nginx에서 X-Real-IP 설정하기: 예제 및 설명 (0) | 2024.03.13 |
---|---|
[Java/자바] Supplier 예제 (0) | 2024.03.13 |
[Java/자바] 다수의 Predicate를 and()로 연결하여 수행하기 (0) | 2024.03.13 |
[Java/자바] Predicate.isEqual() 메서드: 동등성 검사 (0) | 2024.03.13 |
[Java/자바] Predicate.negate() 메서드 이해하기 (0) | 2024.03.13 |