第二章 传递 对象 实现接口对象对象
输入输出同第一章
第一章传递 静态方法 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");
}
}

浙公网安备 33010602011771号