本文内容针对于oracle的JAVA教程中,lambda表达式章节。
教程围绕“ 如何从 输出所有大于某年龄的职工信息,到 针对性筛选对象并提取信息的通用性函数” 而展开,阅读完整个教程不光能学习到lambda表达式的用法,还可深入体会到所谓 抽象、泛化 的概念。
-
最直接简单的实现如下,代码思路很简单,依次遍历表中所有职工,逐个判断年龄,符合条件则输出。
这里有一个特殊遍历方法,python里也有类似的概念。由于List是Iterable的子类,故可使用For-Each Loop。
public static void printPersonsOlderThan(
List<Person> roster, int age) {
for (Person p : roster) {
if (p.getAge() >= age) {
p.printPerson();
}
}
}
printPersonsOlderThan(roster, 20);
- 那如果想筛选出小于某年龄的呢?重新写一个会显得很麻烦,能否将上一个函数改进一下,让它更general?考虑大于a等价于大于a小于max,小于a等价于大于min小于a,则可将两者抽象合并为某年龄段。
public static void printPersonsWithinAgeRange(
List<Person> roster, int low, int high) {
for (Person p : roster) {
if (low <= p.getAge() && p.getAge() < high) {
p.printPerson();
}
}
}
printPersonsWithinAgeRange(roster, 14,