1. 程式人生 > >Java8集合中的Lambda表示式 ------與LambdaJ(集合操作)區別開來

Java8集合中的Lambda表示式 ------與LambdaJ(集合操作)區別開來

Lambdas表示式是Java 8的主題,在Java平臺上我們期待了很久。但是,如果如果我們不在集合中使用它的話,就損失了很大價值。把現有介面遷移成為lambda風格介面的問題已經通過default methods,也就是defender methods解決了。在這篇文章裡面我們來看一看Java集合裡面的批量資料操作(bulk operation)。

批量操作

最初的變更文件已經說了,批量操作是“給Java集合框架新增的用以批量操作資料的功能,而它是基於lambda函式實現的”。引用的話也就是在說,lambda移植到Java 8對我來說的實際目的,就是它提供了一種新的使用集合的方式,這也是最重要的特性,表示式操作符可以並行執行,並且lambda是一個比常規表示式操作符更好的工具。

內部和外部的迭代

歷史上,Java集合是不能夠表達內部迭代的,而只提供了一種外部迭代的方式,也就是for或者while迴圈。要描述內部迭代,我們需要用到LambdaJ這樣的類庫:

1

2

List persons = asList(new Person("Joe"), new Person("Jim"), new Person("John"));

forEach(persons).setLastName("Doe");

從上面的例子可以看出,我們不需要關心last name是怎麼被設定到每一個person物件裡面去的,也許這樣的行為是支援併發執行的。現在我們可以在Java 8中使用類似的表達了:

1

persons.forEach(p -> p.setLastName("Doe"))

內部迭代其實和集合的批量操作並沒有密切的聯絡,這只是一個小小的特性,藉助它我們感受到語法表達上的變化。真正有意思的和批量操作相關的是新的流(stream)API。

轉載於:http://www.importnew.com/14600.html