Predicate
- java.util.function.Predicate<T> 인터페이스는 test라는 추상 메서드를 정의하며 test는 제너릭 형식 T의 객체를 인수로 받아 boolean을 반환.
- Person 클래스(인터페이스에 들어갈 변수들 입니다.)
public class Person {
private String firstName;
private String lastName;
private String job;
private String gender;
private int age;
private int salary;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Person(String firstName, String lastName, String job, String gender, int age, int salary) {
this.firstName=firstName;
this.lastName=lastName;
this.job=job;
this.gender=gender;
this.age=age;
this.salary=salary;
}
@Override
public String toString() {
return "Developer [name = " + firstName +" "+lastName+", job = "+job+", gender = "
+gender+ ", age = " +age+", salary = " +salary+"]\n";
}
}
- Predicate 예시문
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
public class JavaTest {
public static Predicate<Person> predicate1() {
return str -> str.getAge() > 21 && str.getGender().equals("male");
}// 나이가 21살보다 많고 남성인 경우 출력
public static Predicate<Person> predicate2() {
return str -> str.getAge() > 18 && str.getGender().equals("female");
}//나이가 18보다 많고 여성인 경우 출력
public static Predicate<Person> predicate3(Integer age) {
return str -> str.getAge() > age;
}//나이가 지정된 값보다 작은 경우(매개변수로 나이) 출력
public static void main(String[] args) {
List<Person> results = new ArrayList<Person>();
results.add(new Person("Elsdon", "Jaycob","Java programmer","male",43,2000));
results.add(new Person("Tamsen", "Brittany","Java programmer","female",23,1500));
results.add(new Person("Floyd", "Donny","Java programmer","male",33,1800));
results.add(new Person("Sindy", "Jonie","Java programmer","female",32,1600));
results.add(new Person("Vere", "Hervey","Java programmer","male",22,1200));
results.add(new Person("Maude", "Jaimie","Java programmer","female",27,1900));
results.add(new Person("Shawn", "Randall","Java programmer","male",30,2300));
results.add(new Person("Jayden", "Corrina","Java programmer","female",35,1700));
results.add(new Person("Palmer", "Dene","Java programmer","male",33,2000));
results.add(new Person("Addison", "Pam","Java programmer","female",34,1300));
results.add(new Person("Jarrod", "Pace","PHP programmer","male",34,1550));
results.add(new Person("Clarette", "Cicely","PHP programmer","female",23,1200));
results.add(new Person("Victor", "Channing","PHP programmer","male",32,1600));
results.add(new Person("Tori", "Sheryl","PHP programmer","female",21,1000));
results.add(new Person("Osborne", "Shad","PHP programmer","male",32,1100));
results.add(new Person("Rosalind", "Layla","PHP programmer","female",25,1300));
results.add(new Person("Fraser", "Hewie","PHP programmer","male",36,1100));
results.add(new Person("Quinn", "Tamara","PHP programmer","female",21,1000));
results.add(new Person("Alvin", "Lance","PHP programmer","male",38,1600));
results.add(new Person("Evonne", "Shari","PHP programmer","female",40,1800));
results.stream().filter(predicate1()).forEach(System.out::println);
results.stream().filter(predicate2()).forEach(System.out::println);
results.stream().filter(predicate3(22)).forEach(System.out::println);
//predicate 함수를 통해 필터링되어지고 결과를 출력한다.
}
}
- 결과(predicate1)
Developer [name = Shawn Randall, job = Java programmer, gender = male, age = 30, salary = 2346]
Developer [name = Elsdon Jaycob, job = Java programmer, gender = male, age = 43, salary = 2040]
Developer [name = Palmer Dene, job = Java programmer, gender = male, age = 33, salary = 2040]
Developer [name = Floyd Donny, job = Java programmer, gender = male, age = 33, salary = 1836]
Developer [name = Alvin Lance, job = PHP programmer, gender = male, age = 38, salary = 1648]
Developer [name = Victor Channing, job = PHP programmer, gender = male, age = 32, salary = 1648]
Developer [name = Jarrod Pace, job = PHP programmer, gender = male, age = 34, salary = 1596]
Developer [name = Vere Hervey, job = Java programmer, gender = male, age = 22, salary = 1224]
Developer [name = Fraser Hewie, job = PHP programmer, gender = male, age = 36, salary = 1133]
Developer [name = Osborne Shad, job = PHP programmer, gender = male, age = 32, salary = 1133]
- 결과(predicate2)
Developer [name = Maude Jaimie, job = Java programmer, gender = female, age = 27, salary = 1938]
Developer [name = Evonne Shari, job = PHP programmer, gender = female, age = 40, salary = 1854]
Developer [name = Jayden Corrina, job = Java programmer, gender = female, age = 35, salary = 1734]
Developer [name = Sindy Jonie, job = Java programmer, gender = female, age = 32, salary = 1632]
Developer [name = Tamsen Brittany, job = Java programmer, gender = female, age = 23, salary = 1530]
Developer [name = Rosalind Layla, job = PHP programmer, gender = female, age = 25, salary = 1339]
Developer [name = Addison Pam, job = Java programmer, gender = female, age = 34, salary = 1326]
Developer [name = Clarette Cicely, job = PHP programmer, gender = female, age = 23, salary = 1236]
Developer [name = Quinn Tamara, job = PHP programmer, gender = female, age = 21, salary = 1030]
Developer [name = Tori Sheryl, job = PHP programmer, gender = female, age = 21, salary = 1030]
- 결과(predicate3)
Developer [name = Shawn Randall, job = Java programmer, gender = male, age = 30, salary = 2346]
Developer [name = Elsdon Jaycob, job = Java programmer, gender = male, age = 43, salary = 2040]
Developer [name = Palmer Dene, job = Java programmer, gender = male, age = 33, salary = 2040]
Developer [name = Maude Jaimie, job = Java programmer, gender = female, age = 27, salary = 1938]
Developer [name = Evonne Shari, job = PHP programmer, gender = female, age = 40, salary = 1854]
Developer [name = Floyd Donny, job = Java programmer, gender = male, age = 33, salary = 1836]
Developer [name = Jayden Corrina, job = Java programmer, gender = female, age = 35, salary = 1734]
Developer [name = Alvin Lance, job = PHP programmer, gender = male, age = 38, salary = 1648]
Developer [name = Victor Channing, job = PHP programmer, gender = male, age = 32, salary = 1648]
Developer [name = Sindy Jonie, job = Java programmer, gender = female, age = 32, salary = 1632]
Developer [name = Jarrod Pace, job = PHP programmer, gender = male, age = 34, salary = 1596]
Developer [name = Tamsen Brittany, job = Java programmer, gender = female, age = 23, salary = 1530]
Developer [name = Rosalind Layla, job = PHP programmer, gender = female, age = 25, salary = 1339]
Developer [name = Addison Pam, job = Java programmer, gender = female, age = 34, salary = 1326]
Developer [name = Clarette Cicely, job = PHP programmer, gender = female, age = 23, salary = 1236]
Developer [name = Fraser Hewie, job = PHP programmer, gender = male, age = 36, salary = 1133]
Developer [name = Osborne Shad, job = PHP programmer, gender = male, age = 32, salary = 1133]
'Java > JAVA8' 카테고리의 다른 글
[자바] 함수형 인터페이스(Consumer) (0) | 2021.07.19 |
---|---|
[자바] 함수형 인터페이스(Function) (0) | 2021.07.18 |
[자바] 원 반지름을 랜덤으로 선언해 가장 큰 원 넓이 구하기 (0) | 2021.07.01 |
[자바] 하나의 계좌와 3개의 지점에서 입급과 출금을 하는 프로그램 (0) | 2021.07.01 |
[자바] 2개의 주사위의 숫자를 랜덤으로 출력(스레드 이용) (0) | 2021.07.01 |