# Lambda表達式
讓我們從最簡單的例子開始,來學習如何對一個string列表進行排序。我們首先使用Java 8之前的方法來實現:
```
List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
Collections.sort(names, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
```
靜態工具方法Collections.sort接受一個list,和一個Comparator接口作為輸入參數,Comparator的實現類可以對輸入的list中的元素進行比較。通常情況下,你可以直接用創建匿名Comparator對象,并把它作為參數傳遞給sort方法。
除了創建匿名對象以外,Java 8 還提供了一種更簡潔的方式,Lambda表達式。
```
Collections.sort(names, (String a, String b) -> {
return b.compareTo(a);
});
```
你可以看到,這段代碼就比之前的更加簡短和易讀。但是,它還可以更加簡短:
```
Collections.sort(names, (String a, String b) -> b.compareTo(a));
```
只要一行代碼,包含了方法體。你甚至可以連大括號對{}和return關鍵字都省略不要。不過這還不是最短的寫法:
```
Collections.sort(names, (a, b) -> b.compareTo(a));
```
Java編譯器能夠自動識別參數的類型,所以你就可以省略掉類型不寫。讓我們再深入地研究一下lambda表達式的威力吧。