如何使用lambda表达式打印所有名称以A - C开头的男性

时间:2016-03-24 02:25:03

标签: java list lambda

我目前正在研究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) -> 
                    ????????????????
            );
}

1 个答案:

答案 0 :(得分:1)

如果你想使用lambda,你也可以使用流:

roster.stream()
      .filter(p -> p.getGender() == Sex.MALE
                && p.getName().matches("[a-cA-C].*"))
      .forEach(Person::printPerson);

现在,使用matches()这样的效果不是最好的,所以如果性能成为问题就可以改进。