Lambda表达式是一种函数式编程的体验,它的核心是对接口的实现。不想以前,实现接口必须有一个具体的对象被创建,Lambda表达式也可以实现接口,而不必再繁琐的创建对象。当然Labmda并不是再取代面向对象编程,而是对面向对象编程的一种优化或者说是补充。在某些场景中,可以极大简化编码。例如下面的代码:
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Predicate;
public class PersonLambda {
public static void main(String[] args) {
List<Person> peoples = Arrays.asList(
new Person("san", "Zhang", 18),
new Person("si", "Li", 27),
new Person("wu", "Wang", 36),
new Person("liu", "Zhao", 22),
new Person("qi", "Hu", 14)
);
// 1. 对lastname排序
Collections.sort(peoples, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getLastName().compareTo(o2.getLastName());
}
});
// lambda
Collections.sort(peoples, (p1, p2) -> p1.getLastName().compareTo(p2.getLastName()));
// 2. 打印所有的 lastname
performConditionally(peoples, p -> true);
// 3. 打印以Z开头的lastname
performConditionally(peoples, p -> p.getLastName().startsWith("Z"));
}
private static void performConditionally(List<Person> peoples, Predicate<Person> predicate) {
for (Person p : peoples) {
if (predicate.test(p)) {
System.out.println(p);
}
}
}
}
从上面的代码就可以看出Lambda的好处。 当某些类似的函数,只是在if条件上有区别,这样我们可以利用Lambda表达式来达到简化的目的,而且也增强了代码的可读性,减少的代码量。
504



被折叠的 条评论
为什么被折叠?



