JDK8的集合流式操作
阿新 • • 發佈:2019-01-10
需要Lambda表示式的原因主要有三個:
1. 更緊湊的程式碼
2. 通過提供額外的功能對方法的功能進行修改的能力
3. 更好地支援多核處理
更緊湊的程式碼
Lambda表示式以一種簡潔的方式去實現僅有一個方法的Java類。
例如,如果程式碼中有大量的匿名內部類–諸如用於UI應用中的監聽器與處理器實現,以及用於併發應用中的Callable與Runnable實現–在使用了Lambda表示式之後,將使程式碼變得非常短,且更易於理解。
修改方法的能力
有時,方法不具備我們想要的一些功能。例如,Collection介面中的contains()方法只有當傳入的物件確實存在於該集合物件中時才會返回true。但我們無法去幹預該方法的功能,比如,若使用不同的大小寫方案也可以認為正在查詢的字串存在於這個集合物件中,我們希望此時contains()方法也能返回true。
簡單點兒說,我們所期望做的就是”將我們自己的新程式碼傳入”已有的方法中,然後再呼叫這個傳進去的程式碼。Lambda表示式提供了一種很好的途徑來代表這種被傳入已有方法且應該還會被回撥的程式碼。
更好地支援多核處理
當今的CPU具備多個核心。這就意味著,多執行緒程式能夠真正地被並行執行,這完全不同於在單核CPU中使用時間共享這種方式。通過在Java中支援函數語言程式設計語法,Lambda表示式能幫助你編寫簡單的程式碼去高效地應用這些CPU核心。
例如,你能夠並行地操控大集合物件,通過利用並行程式設計模式,如過濾、對映和化簡(後面將會很快接觸到這些模式),就可使用到CPU中所有可用的硬體執行緒。