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