java 8新特性之lambda,簡化你的代碼

剛開始工作時,使用的語言是ruby,使用Ruby可以寫出簡短而又功能強大的代碼,ruby語法簡單

最近一年接觸的都是java項目,剛剛接手到的一個項目使用了很多java 8的特性,代碼看起來簡潔許多,特此研究了一下

lambda語法:

JavaScript 是最典型的函數式編程語言。它有個好處,提供了一種強大的功能——閉包,相比於傳統的編程方法有很多優勢,閉包是一個可調用的對象,它記錄了一些信息,這些信息來自於創建它的作用域。
Java 現在提供的最接近閉包的概念便是 Lambda 表達式,雖然閉包與 Lambda 表達式之間存在顯著差別,但至少 Lambda 表達式是閉包很好的替代者。
Lambda 表達式是對象,他們必須依附於一類特別的對象類型——函數式接口(functional interface)

Java 中的 Lambda 表達式通常使用 (argument) -> (body) 語法書寫:

(arg1, arg2...) -> { body }

(type1 arg1, type2 arg2...) -> { body }

函數式接口

函數式接口是隻包含一個抽象方法聲明的接口。
每個 Lambda 表達式都能隱式地賦值給函數式接口

//Old way:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
for(Integer n: list) {
   System.out.println(n);
}

//New way:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
list.forEach(n -> System.out.println(n));

//user stream and map:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
list.stream().map(n -> n*n).forEach(n -> System.out.println(n));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章