Guava函数式编程
关于函数式编程,好像越来越多的编程语言都开始逐渐支持这个特性,最明显的就是python,javascript,还有Swift等等。Java终于在1.8中支持了函数式编程,但是在JDK1.8推出来以前,Guava就为我们提供了强大的函数式编程框架—Function。
Function和Functions
Function<A, B>
,它声明了单个方法B apply(A input)
。Function对象通常被预期为引用透明的并且引用透明性中的”相等”语义与equals
一致,如a.equals(b)
意味着function.apply(a).equals(function.apply(b))
。
Functions
类为操作Function提供了很多方便的方法,比如合并两个函数compose
,以及操作集合框架forMap
等等。
Function 使用案例
我们有一些国家的首都
和国家
的相关数据。如下:
CountryEnum.java
1 | package com.qinjiangbo.vo; |
现在对国家及国家的相关信息作如下处理:
(1) 查找每个国家的首都信息
1 | public List<String> transformCapitalsInUpperCase() { |
(2) 查找每个国家的首都信息并将其转换为大写以及倒排
1 | public List<String> composeTwoFunctions() { |
(3) 从Map中加载数据到指定的List中
1 | public List<String> forMapFunction() { |
(4) forMap函数测试二
1 | public List<String> forMapFunction2() { |
总结
Function使用的门槛会有点高,因为使用起来可能不是那么容易习惯。不过时间长了就会感受到函数式编程带来的乐趣,但是同时也必须提醒你,不要为了使用函数式编程而去使用函数式编程。这一点必须切记!