Function和Functions进行对象转换
Function<F,T>接口: 一个function就是从一个对象到另一个对象的转换变形
Function接口的第一个参数是原始的对象, 第二个参数就是你想要转成的对象
Function接口中的apply方法,接收一个输入对象并返回一个输出对象, 接收第一个参数, 经过apply方法处理返回你想要的结果。 一个好的Function实现应该没有反作用,也就是说对象做为参数传递方法调用apply方法后应保持不变。
@Test
public void testFunction() {
Function<Date, String> function = new Function<Date, String>() {
@Override
public String apply(Date input) {
return new SimpleDateFormat("yyyy-MM-dd").format(input);
}
};
System.out.println(function.apply(new Date())); //2014-08-21
}app
1. 转换单个对象
function.apply(new Date());
2. 批量转换一个集合对象
像Lists和Maps这类的Collection工具类给咱们提供了转换的方法:
topMap = Maps.transformValues(fromMap, function);
toList = Lists.transform(fromList, function);ide
多数状况下,咱们都须要本身书写Function接口的实现,以适应工做的需求,不过Guava提供了Functions工具类,其包含了一些经常使用的Function实现:工具
Functions.compose()方法
//Function<A, C> compose(Function<B, C> g, Function<A, ? extends B> f)
//接收两个Function做为参数,返回两个Function的组合, f的输出会做为g的输入,g输出为最终做为compose的输出 等价于: g.apply(f.apply(key));
使用Predicate和 Predicates进行对象过滤spa
使用Supplier和Suppliers进行对象的包装构建orm