作者brianhsu (坟墓)
看板java
标题Re: [翻译] Java 8 取出 Collection element 的方式
时间Wed Apr 3 16:16:42 2013
※ 引述《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)
1F:推 PsMonkey:是 Java 的版本看起来比较复杂,不是 Java 版 [泪目][炸] 04/03 16:34
那我改一下好了 XD
※ 编辑: brianhsu 来自: 140.109.19.84 (04/03 16:36)