常用函数式接口_andThen,练习_自定义函数模型拼接
常用函数式接口_andThen
Function接口中的默认方法andThen:用来进行组合操作
需求:
把String类型的123转话为Integer类型,把转化后的结果加10
把增加之后Integar类型的数据,转化为String类型
分析:
第一次是把string类型转换为了Integer类型
所以我们可以使用Function<string, Integer> fun1
Integer i= fun1.apply("123")+10;
第二次是把Integer类型转换为string类型
所以我们可以使用Function<Integer, String> fun2
String s = fun2.apply(i);
我们可以使用andThen方法,把两次转换组合在一起使用
string s = fun1.andThen(fun2 ).appiy( "123");fun1先调用apply方法,把字符串转换为Integer
fun2再调用apply方法,把Integer转换为字符串
案例:
public static void change(String s , Function<String,Integer>fun){
Integer apply = fun.apply(s);
System.out.println(apply);
}
public static void main(String[] args) {
String s ="1234";
change(s,s1 -> {
return Integer.parseInt(s)+10;
});
}
}
练习_自定义函数模型拼接
题目:
使用Function进行函数模型的拼接,按照顺序要执行多个函数作为:
String str=“大傻 , 20”
分析:
1.将字符串截取数字年龄部分,得到字符串;
Function<string , string> “赵丽颖,20"->"20"
2.将上一步的字符串转换成为int类型的数字;
Function<string , Integer> "26"->20
3.将上一步的int数字累加10o,得到结果int数字。
Function<Integer, Integer> 20->120
案例:
public static int filter(String s, Function<String,String> p1,
Function<String,Integer> p2, Function<Integer,Integer> p3) {
return p1.andThen(p2).andThen(p3).apply(s);
}
public static void main(String[] args) {
String arr ="大傻,女";
int filter = filter(arr, s -> {
return s.split(",")[1];
}, s -> {
return Integer.parseInt(s);
}, s -> {
return s + 100;
});
System.out.println(filter);
}
}