閱讀579 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《精通Spring MVC 4》——2.8 Java 8的流和lambda表達式

本節書摘來自異步社區《精通Spring MVC 4》一書中的第2章,第2.8節,作者:【美】Geoffroy Warin著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

2.8 Java 8的流和lambda表達式

可能你對lambda還不太了解,在Java 8中,每個集合都會有一個默認的方法stream(),它能夠實現函數式風格的操作。

這些操作可以是中間操作(intermediate_operation),它會返回一個流,這樣就能將其連接起來,也可以是終止操作(terminal operation),這樣的話會返回一個值。

最著名的中間操作如下所示。

map:它會為列表中的每個元素都應用某個方法,並返回結果所組成的列表;
filter:它會返回匹配斷言的所有元素;
reduce:它會借助一個操作和累加器(accumulator)將一個列表聚合到單個值上。
Lambda是函數表達式的便捷語法,它可以用到單個的抽象方法(Single Abstract Method)之中,也就是隻包含一個函數的接口。

例如,我們可以按照如下的方式來實現Comparator接口:

Comparator<Integer> c = (e1, e2) -> e1 - e2;
在lambda之中,return關鍵字就是最後的表達式。

之前所使用的雙冒號操作符是引用類函數的快捷方式:

Tweet::getText
之前的表達式等價於:

(Tweet t) -> t.getText()
collect方法允許我們調用一個終止操作。Collectors類是一組終止操作,它會將結果放到列表、集合或Map之中,允許進行分組(grouping)、連接(joining)等操作。

調用collect(Collectors.toList())方法將會產生一個列表,其中包含了流中的每一個元素,在我們的例子中,也就是Tweet的內容。

最後更新:2017-05-27 16:01:28

  上一篇:go  獲取微信公眾號授權失敗,請稍後重試!公眾平台返回原始數據為:錯誤代碼-40164 40125等的解決方法
  下一篇:go  《精通Spring MVC 4》——2.7 結束Hello World,開始獲取Tweet