tags: Java Lambda JDK8 Functional Programming 預設方法
Java 開發者的函數式程式設計(5)JDK8 預設方法
By caterpillar | 2013/08/06讓我們回歸到 Java 的現實世界吧!Java 的語法是用來定義抽象資料型態,以命令式風格來撰寫程式,它允許可變動的變數與物件,所以之前的文章是純屬娛樂嗎?
Java 開發者的函數式程式設計(4)不可變特性
By caterpillar | 2013/07/31如果程式流程中有可變的變數,因為要改變它們的值太簡單了,反而使得問題難以切割為子問題;使用了非區域變數的方法可能有副作用,也就是說,在給定相同引數的情況下,方法可能傳回不同的結果,因為這些方法有看不到的輸入與輸出;如果物件狀態可變,物件就會是副作用的集合體...
Java 開發者的函數式程式設計(3)List 處理模式
By caterpillar | 2013/07/24如果以函數式風格來編寫程式,你會很容易發覺函式間具有相近結構,因而能輕易地提煉為更高階的抽象以進行重用,這邊提到的 filter、map 與 reduce 就是個不錯的例子。一旦你能夠函數式地思考,你就能夠發現更多高階的抽象。
tags: Java guava-libraries Range DiscreteDomain 教學 DSL
【Guava 教學】(8)你需要的其實是範圍(Range)?
By caterpillar | 2013/07/23實際上,你需要的或許只是範圍,那麼用 Range 就足夠了,如果真的需要逐一取得範圍中的不連續元素,搭配 DiscreteDomain 就可以達到目的,而且不用一開始就建立所有的元素,只需在必要的時候取用即可。
Java 開發者的函數式程式設計(2)代數資料型態
By caterpillar | 2013/07/19我們大多熟悉物件導向程式設計,熟悉抽象資料型態(Abstract data type, ADT)。抽象資料型態的模型中封裝了資料結構與實作,僅透露互動時的公開介面;然而,代數資料型態(Algebraic data type)相對地曝露了基本的資料結構及規律性,在函數式程式設計的領域中,代數資料型態是基本元素。
【Guava 教學】(7)Multiset、Multimap 與 BiMap
By caterpillar | 2013/07/18如果有個清單,想要取得清單中不重複的元素,最快的方式就是使用 JDK 中的 Set。如果不單只是計數,在後續迭代時也想要取得重複元素呢?程式碼當然可以自己撰寫,只不過 Guava 的 Multiset 實作將這些細節都封裝起來了…
tags: Java Lambda Functional Programming
Java 開發者的函數式程式設計(1)初探函數式程式設計
By caterpillar | 2013/07/15如果使用的語言並非函數式語言,你不能不假思索地直接套用函數式設計的所有概念,否則就有可能事倍功半,可讀性與效能都會變差。如果你想進行純函數式程式設計...只有先瞭解函數式設計的本質,才可以讓我們明瞭,如何適當地擷取函數式設計的概念。
【Guava 教學】(6)不可變群集
By caterpillar | 2013/07/11不可變物件(Immutable object)有許多好處,像是在並行(Concurrent)程式設計時,因為就不用擔心那些執行緒共用競爭的問題; 在面對資料處理問題時,需要一些群集(Collection)物件,像是有序的清單(List)、收集不重複物件的集合(Set)等,這些群集物件若是不可變,那麼就有可能共用資料結構,達到節省時間及空間之目的。
認識 Lambda/Closure(8)方法參考與建構式參考
By caterpillar | 2013/07/09在 Java 中引人 Lambda 的同時,與現有 API 維持相容性是主要考量之一。除了採用函式介面之外,方法參數(Method reference)在重用現有 API 上也扮演了重要的角色。重用現有的方法實作,可避免到處寫下 Lambda 運算式。
tags: 世間
【世間】你想賣香雞排嗎?
By caterpillar | 2013/07/05很多工作或決定,其實就只是想要什麼,自己選擇,選擇之後,承擔後果,如此而已,自己想清楚想要什麼才是最重要的 ... 如果你做不到,那麼就是不尊重他們的工作,你去做了,到時就是不尊重自己的工作,你自己都不想尊重的工作,為什麼還想去做?

Java 學習之路









