조건자로 필터링
자세한 예는 환자 기록 목록이 있고 미성년 환자 목록을 가져오려는 경우입니다.
이 코드를 자바 파일에 복사하여 시작하십시오.
public class FilteringPatients {
private static List<Patient> patientsList= Arrays.asList(
new Patient("Norman", 15,210),
new Patient("kai", 17,195),
new Patient("Adam", 21,180)
);
public static class Patient{
private String name;
private int age;
private int roomNumber;
public Patient(String n,int a, int nbr) {
name=n;
age=a;
roomNumber=nbr;
}
public int getAge() {
return age;
}
}
}
여기서 요구 사항은 18세 미만입니다.
public static List<Patient> filterUnderagedPatients ( List<Patient> patientsList){
List<Patient> Underaged_Patients= new ArrayList<Patient>();
for (Patient patient: patientsList) {
if(patient.getAge()<18)
Underaged_Patients.add(patient);
}
return Underaged_Patients;
}
이 방법으로 진행하거나 필터 방법을 사용할 수 있습니다.
Stream<T> filter(Predicate<? super T> predicate);
필터는 일반적으로 개체 컬렉션을 필터링하는 데 사용됩니다.필터 메서드의 허용되는 매개변수는 Predicate입니다. 자세히 살펴보겠습니다.
첫째, Predicate는 기능적 인터페이스입니다. 즉, Predicate는 Lambda 표현식으로 표현될 수 있습니다.
기능 메서드는 하나의 인수를 취하고 부울을 반환하는 테스트(객체)입니다. 조건이 참인지 거짓인지 테스트하는 데 일반적으로 사용됩니다.
@FunctionalInterface
public interface Predicate<T
이전 예제를 살펴보겠습니다. 하지만 이번에는 술어와 함께 필터 메서드를 사용하겠습니다.
public static class UnderagedPatientsPredicate implements Predicate<Patient> {
@Override
public boolean test(Patient patient) {
return patient.getAge()<18;
}
}
public static List<Patient > filter(Predicate<Patient > predicate){
List<Patient> Underaged_list= new ArrayList();
for (Patient patient: patientsList) {
if(predicate.test(patient))
Underaged_list.add(patient);
}
return Underaged_list;
}
메인 함수에서 이것을 테스트하자
public static void main(String[] args) {
System.out.println("Using filterUnderagedPatients.");
for (Patient patient : filterUnderagedPatients(patientsList)
) {
System.out.println(patient);
}
System.out.println("Using filter with Predicate.");
for (Patient patient : filter( new UnderagedPatientsPredicate(), patientsList)
) {
System.out.println(patient);
}
}
결과는 미성년자 환자 목록입니다.
Using filterUnderagedPatients.
Patient{name='Norman', age=15, roomNumber=210}
Patient{name='kai', age=17, roomNumber=195}
Using filter with Predicate.
Patient{name='Norman', age=15, roomNumber=210}
Patient{name='kai', age=17, roomNumber=195}
Reference
이 문제에 관하여(조건자로 필터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/leriaetnasta/filtering-with-predicate-4def텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)