我是java 8编程的新手,想知道使用streams()/ lambda&#39>重写下面的最佳方法是什么。
class Person {
String name;
int age;
...
}
public boolean checkPersonAboveAge(List<Person> persons, int age) {
for (Person person : persons) {
if (person.age > age) {
return true;
}
}
return false;
}
到目前为止我试过了:
public boolean checkPersonAboveAge(List<Person> persons, int age) {
Person p = persons.stream().filter(p -> p.age > age).findAny().orElse(null);
if (p != null) {
return true;
}
return false;
}
我用lamdba读到了代码的可读性会有所改善,但是看看这个例子我或者没有正确使用这个功能或者缺少某些东西。
答案 0 :(得分:5)
您当前的流尝试确实有效,但这种情况并不常见,也不是最佳方式。
相反,请使用anyMatch
方法,该方法完全符合您的目标。
return persons.stream().anyMatch(p -> p.age > age);