《精通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