我目前正在研究java教程oracle上的lambda概念。为了练习lambda的概念,我试图提出lambda代码,打印出所有名称以A到C开头的男性。但是,我无法弄清楚在with open(...) as output:
之后编写的代码在lambda表达式中。有人可以帮帮我吗?在此先感谢您的帮助!
->
人员类:
public static void printPerson(List<Person> listOfPerson, CheckPerson tester){
for(Person p : listOfPerson){
if(tester.test(p)){
p.printPerson();
}
}
}
public static void main(String[] args) {
List<Person> roster = Person.createRoster();
for (Person p : roster) {
p.printPerson();
}
System.out.println("5.1 lambda male name begin with a - c");
RosterTest.printPerson(roster,
(Person p) ->
????????????????
);
}
答案 0 :(得分:1)
如果你想使用lambda,你也可以使用流:
roster.stream()
.filter(p -> p.getGender() == Sex.MALE
&& p.getName().matches("[a-cA-C].*"))
.forEach(Person::printPerson);
现在,使用matches()
这样的效果不是最好的,所以如果性能成为问题就可以改进。