常见函数式接口
JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供
Function接口
Function<T,R>接口用于根据一个类型的数据得到另一个类型的数据 前者称为前置条件,后置条件
抽象方法:apply
Function接口中的最主要的抽象方法为
R apply(T t):根据类型T的参数获取类型R的结果
使用场景例如:将String类型转换为Integer类型
代码:
/* 定义一个方法 方法的参数传递一个字符串类型的整数 方法的参数传递一个Function接口 泛型使用<String,Integer> 使用Function接口中的方法apply 把字符串类型的整数 转换为Integer类型的整数 */
public class Demo01Function { 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方法 传递字符串类型的整数 和Lambda表达式 change(s,(String str) -> { return Integer.valueOf(str); }); } }
默认方法:andThen
Function接口中有一个默认的andThen方法 用来进行组合操作
代码:
/* 定义一个方法 参数串一个字符串类的整数 参数在传递两个Funcion接口 一个泛型使用Function<String,Integer> 一个泛型使用Function<Integer,String> */
public class Demo02Function { public static void change(String s, Function<String, Integer> fun1, Function<Integer, String> fun2) { String ss = fun1.andThen(fun2).apply(s); System.out.println(ss); } public static void main(String[] args) { // 定义一个字符串类型的整数 String s = "123"; // 调用change方法 传递字符串和两个Lambda表达式 change(s, (String str) -> { // 把字符串转换为整数+10 return Integer.parseInt(str) + 10; }, (Integer o) -> { // 把整数转换为字符串 return o + ""; }); // 优化lambda // 调用change方法 传递字符串和两个Lambda表达式 change(s, (str) -> { // 把字符串转换为整数+10 return Integer.parseInt(str) + 10; }, (o) -> { // 把整数转换为字符串 return o + ""; }); } }
练习-自定义函数模型拼接
题目:
请使用Function进行函数模型的拼接 按照顺序需要执行的多个函数操作为:
Sting str="张三,20";
1.将字符串截取数字年龄部分 得到字符串
2.将上一步的字符串转换为int类型的数学
3.将上一步的int数字累加100 得到结果int数字
代码:
/* 定义一个方法 参数传递包含名字和年龄的字符串 参数再传递3个Function接口用于类型转换 */
public class Demo03Function { 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 c = change(str, (String s) -> { return s.split(",")[1]; }, (String s) -> { return Integer.parseInt(s); }, (Integer i) -> { return i + 100; }); System.out.println(c); } }标签:Function,return,函数,接口,字符串,change,String From: https://www.cnblogs.com/shenziyi/p/16798503.html