第二章 传递 对象 实现接口对象对象

输入输出同第一章
第一章传递 静态方法 lambda
此次传递 实现接口的对象,现场实现的接口的对象
fIlterPeoples(company, new PeopleAgePredicate());
fIlterPeoples(company, new PeoplePredicate(){
            public boolean test(People p){
                return p.getName().startsWith("A");
            }
        });
上次的 if(p.test(people) test替代为传递过来的方法

筛选age一次
筛选name两次 传递 实现接口的对象,现场实现的接口的对象
输出:



import java.lang.reflect.Array;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class FilteringPeoples {
    public static void main(String[] args){
        // People p= new People("bob", 20);
        List<People> company=Arrays.asList(new People("Bob", 20),
                                            new People("Allen", 25),
                                            new People("Crystal", 30));
        System.out.println(company);
        
    
        List<People> oldPeoples=fIlterPeoples(company, new PeopleAgePredicate());
        System.out.println(oldPeoples);
        List<People> aPeoples=fIlterPeoples(company, new PeopleNAmePredicate());
        System.out.println(aPeoples);
         aPeoples=fIlterPeoples(company, new PeoplePredicate(){
            public boolean test(People p){
                return p.getName().startsWith("A");
            }
        });
        System.out.println(aPeoples);

      
    }

    public static List<People> fIlterPeoples(List<People> company,PeoplePredicate p){
        List<People> result=new ArrayList<>();
        for (People people:company){
            if(p.test(people)){
                result.add(people);
            }
        }
        return result;
    }


}
 class People{
    String name;
    Integer age;
    public People(String name,Integer age){
        this.name=name;
        this.age=age;
 
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public Integer getAge(){
        return age;
    }
    public void setAge(Integer age){
        this.age=age;
    }
    public String toString(){
        return MessageFormat.format("people name:{0} age:{1}\n", name,age);
    }
 }
 
 interface PeoplePredicate{
     public boolean test(People p);
 }
 class PeopleAgePredicate implements PeoplePredicate{
     public boolean test(People p){
         return p.getAge()>25;
     }
 }
 class PeopleNAmePredicate implements PeoplePredicate{
    public boolean test(People p){
        return p.getName().startsWith("A");
    }
}
posted @ 2022-05-14 13:05  caiusxin  阅读(63)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css