Lambda表示式-JDK8中的特性
阿新 • • 發佈:2018-12-22
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表示式來達到簡化的目的,而且也增強了程式碼的可讀性,減少的程式碼量。