1. 程式人生 > >Lambda表示式-JDK8中的特性

Lambda表示式-JDK8中的特性

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表示式來達到簡化的目的,而且也增強了程式碼的可讀性,減少的程式碼量。