Re: [翻譯] Java 8 取出 Collection element 的方式

看板java作者 (墳墓)時間12年前 (2013/04/03 16:16), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/4 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : 來閒聊一下... : : 簡單介紹要用的 API 之後,讓我來展示一下跟第一個範例等意的程式碼: : : List<Person> olderThan30 = : : personList.stream(). : : filter(p -> p.age >= 30). : : collect(Collectors.toCollection(() -> new ArrayList<Person>())); : : 上面的程式碼使用內部迴圈以及 lambda expression : : 讓它看起來直覺、簡潔、還可以舒緩眼睛不適。 : : (譯註:我承認最後一個是惡搞亂翻的 [逃]) : 說真的,我覺得這個範例糟糕透了 : 怎麼看都覺得第一個比較簡單阿... [翻桌] : 不然光比較字數也可以阿... Orz 我沒有仔細看文章,所以不確定是不是 API 設計上的問題。XD 但是在 Scala 裡面因為 filter 本身回傳的就是另一個同種類的 Collection, 例如你是 List.filter 他就會回傳另一個 List,你是 Set.filter 就會回傳 另一個 Set,所以會 filter 版會比 loop 版來得簡潔: case class Person(name: String, age: Int) val personList = List(Person("Man1", 30), Person("Man2", 40)) val olderThan30 = personList.filter(_.age > 30) Java 的版本看起來比較複雜應該是多了後面那個 collect 和前面的 stream 吧? 其實主要的邏輯只有 filter 而已,如果 Java 的版本能夠變成: List<Person> olderThan30 = personList.filter(p -> p.age > 30) 就會比迴圈式的簡單易懂多啦。XDDD -- ~ 白馬帶著她一步步地回到中原。白馬已經老了,只能慢慢地走, 'v' Brian Hsu 但終是能回到中原的。江南有楊柳、桃花,有燕子、金魚…… // \\ ( 墳 墓 ) /( )\ 但這個美麗的姑娘就像古高昌國人那樣固執。 【白馬嘯西風】 ^`~'^ http://bone.twbbs.org.tw/blog 『那都是很好很好的,可我偏不喜歡。』 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.19.84 ※ 編輯: brianhsu 來自: 140.109.19.84 (04/03 16:33)

04/03 16:34, , 1F
是 Java 的版本看起來比較複雜,不是 Java 版 [淚目][炸]
04/03 16:34, 1F
那我改一下好了 XD ※ 編輯: brianhsu 來自: 140.109.19.84 (04/03 16:36)
文章代碼(AID): #1HM-LkyQ (java)
討論串 (同標題文章)
文章代碼(AID): #1HM-LkyQ (java)