JAVA/JAVA8
Predicate Functional Interface
최-코드
2024. 8. 13. 14:31
- boolean 타입을 리턴하고 하나의 인자를 받는 test함수가 있다.
- return 타입이 필요한 메소드의 경우 한 줄이면 return을 생략해도 되지만, 여러 줄일 경우 return을 명시적으로 적어야 한다.
- .and()을 통해 &&조건을 .or()을 통해 ||조건을, .negate()을 통해 !조건을 걸 수 있다.
public class PredicateExample {
public static void main(String[] args) {
Predicate<Integer> p1 = a -> a % 2 == 0;
Predicate<Integer> p2 = a -> a % 5 == 0;
System.out.println(p1.and(p2).test(10));
System.out.println(p1.and(p2).test(9));
System.out.println(p1.or(p2).test(8));
System.out.println(p1.or(p2).test(9));
System.out.println(p1.or(p2).negate().test(8));
filterStudentsByGradeLevel();
}
public static void filterStudentsByGradeLevel() {
Predicate<Student> p1 = student -> student.getGradeLevel() >= 3;
Predicate<Student> p2 = student -> student.getGpa() >= 3.9;
Consumer<Student> c = student -> {
if (p1.and(p2).test(student))
System.out.println(student.getName() + ":" + student.getActivities());
};
List<Student> studentList = StudentDataBase.getAllStudents();
studentList.forEach(c);
}
}