java8入门必备——函数式编程思维——映射函数的同义异名问题
2017-09-30 本文已影响20人
每天学点编程
请关注我的微信公众号
个人微信公众号
技术交流群 (仅作技术交流):642646237
请关注我的头条号:
函数式变换映射。传给映射函数的是一个高阶函数和一个集合,它对集合中的每一个元素施用传入的函数之后,产生另一个集合作为返回值。返回的集合大小与原来传入的集合相同(这一点不同于筛选操作),只是元素的取值变了。
Scala语言——map()
函数
map()
函数接受一个代码块作为参数并返回变换后的集合:
map()
函数适用于各种元素类型的集合,不过变换后的集合元素不一定还是原来的类型。
Scala语言——flatMap ()
函数
嵌套的列表在函数式编程语言中运用得极为频繁,因此各语言普遍地具备用来消除嵌套的库函数,此操作为“展平”(flattening)。
flatMap
与map
唯一不一样的地方就是传入的函数在处理完后返回值必须是List
,map
之后必须flat
,所以需要返回值是List
才能执行flat这一步。
flatMap()
函数还可以用在一些在传统眼光看来不存在嵌套的数据结构上。例如可以把字符串看成一系列嵌套在一起的字符:
Groovy语言——collect()
函数
只要配上合适的断言(也就是返回值为true
或false
的函数),collect()
方法可以用在任意的集合上。
Groovy语言——flatten()
函数
用来消除嵌套结构的方法
flatten()
方法适用于一些非典型的集合:
Clojure语言——(map )
函数
其参数为一个高阶函数(包括各种运算符在内)和一个集合:
(map )
的第一个参数可以是任意的单参数函数,无论命名函数、匿名函数都可以,内建函数也包括在内。
Clojure语言——(flatten )
函数
Clojure的(flatten )
函数类似于Groovy: