練習:自定義函數模型拼接
題目
請使用Function 進行函數模型的拼接,按照順序需要執行的多個函數操作爲:
String str = "趙麗穎,20";
1. 將字符串截取數字年齡部分,得到字符串;
2. 將上一步的字符串轉換成爲int類型的數字;
3. 將上一步的int數字累加100,得到結果int數字。
解答
package com.learn.demo07.Function;
import java.util.function.Function;
/*
練習:自定義函數模型拼接
題目
請使用Function進行函數模型的拼接,按照順序需要執行的多個函數操作爲:
String str = "趙麗穎,20";
分析:
1. 將字符串截取數字年齡部分,得到字符串;
Function<String,String> "趙麗穎,20"->"20"
2. 將上一步的字符串轉換成爲int類型的數字;
Function<String,Integer> "20"->20
3. 將上一步的int數字累加100,得到結果int數字。
Function<Integer,Integer> 20->120
*/
public class Demo03Test {
/*
定義一個方法
參數傳遞包含姓名和年齡的字符串
參數再傳遞3個Function接口用於類型轉換
*/
public static int change(String s, Function<String,String> fun1,
Function<String,Integer> fun2,Function<Integer,Integer> fun3){
//使用andThen方法把三個轉換組合到一起
return fun1.andThen(fun2).andThen(fun3).apply(s);
}
public static void main(String[] args) {
//定義一個字符串
String str = "趙麗穎,20";
//調用change方法,參數傳遞字符串和3個Lambda表達式
int num = change(str,(String s)->{
//"趙麗穎,20"->"20"
return s.split(",")[1];
},(String s)->{
//"20"->20
return Integer.parseInt(s);
},(Integer i)->{
//20->120
return i+100;
});
System.out.println(num);
}
}