Java新特性玩轉 JDK8之 lambda表達式
-
講解什麼是函數式編程和什麼是lambda表達式
在JDK8之前,Java是不⽀持函數式編程的,所謂的函數編程,即可理解是將⼀個函數(也稱爲“⾏爲”)作爲⼀個參數進⾏傳遞, ⾯向對象編程是對數據的抽象(各種各樣的POJO類),⽽函數式編程則是對⾏爲的抽象(將⾏爲作爲⼀個參數進⾏傳遞)
- java創建線程再熟悉不過了
jdk8之前創建線程
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("⼩滴課堂學習Java架構教程");
}
});
-
jdk8之後Lambda表達式則只需要使⽤⼀句話
new Thread(() -> System.out.println("學習Java架構教程"));
- 集合容器⾥⾯的字符串排序 使⽤前
List<String> list =Arrays.asList("aaa","ggg","ffff","ccc");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
}
);
for (String string : list) {
System.out.println(string);
}
- 使⽤後
List<String> list =Arrays.asList("aaa","ggg","ffff","ccc");
Collections.sort(list, (a,b)->b.compareTo(a)
);
for (String string : list) {
System.out.println(string);
}
- lambda表達式 使⽤場景(前提):⼀個接⼝中只包含⼀個⽅法,則可以使⽤Lambda表達式,這樣 的接⼝稱之爲“函數接⼝” 語法: (params) -> expression
第⼀部分爲括號內⽤逗號分隔的形式參數,參數是函數式接⼝⾥⾯⽅法的參數;第⼆部分爲⼀個箭頭符號:->;第三部分爲⽅法體,可以是表達式和代碼塊
參數列表 :
括號中參數列表的數據類型可以省略不寫
括號中的參數只有⼀個,那麼參數類型和()都可以省略不寫
⽅法體:
如果{}中的代碼只有⼀⾏,⽆論有返回值,可以省略{},return,分號,要⼀起省略,其他
則需要加上
- 好處: Lambda 表達式的實現⽅式在本質是以匿名內部類的⽅式進⾏實現
重構現有臃腫代碼,更⾼的開發效率,尤其是集合Collection操作的時候,後續會講到