【軟體構造】Mutable類型與Immutable類型 1.前言 在軟體構造這門課中,對mutable類型和immutable類型的深入理解,有助於後續ADT、可維護性、可復用性的學習,因此我們有必要對其進行詳細的分析說明。 我們首先明確的是,mutable類型和immutable類型均屬於ADT的 ...
Java8 Stream 的最佳實踐
java8stream提供了對於集合類的流失處理,其具有以下特點:
Lazy Evaluation(長度可以無限)
只能使用一次
內部迭代
Lazy Evaluation類似函數式中的LazyList,只有在需要時才去求值。減少了記憶體消耗,Java中可以用Iterator模擬。只有在進行終端操作時,stream才會執行。但是這個延遲計算不能保證流中的某個值單獨延遲,需要時單獨分配資源。
內部迭代的意思是我們告訴程式要實現的功能,迭代由程式自己控制。如filter時,我們只提供Predicate,而不是自己寫for迴圈,至於程式自己是如何實現過濾數據的,我們並不關心。可能隨著stream類庫的迭代,實現效率會逐步提升。PS:新版本的Java類庫String終於可以直接拼串了