JavaSE-23.1.5【常用函数式接口之Function、Function案例-按照指定要求操作数据】
1 package day14.lesson1; 2 3 import java.util.function.Function; 4 5 /* 6 1.10 常用函数式接口之Function 7 8 Function<T,R>接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值 9 10 R apply(T t) 将此函数应用于给定的参数 11 default Function andThen(Function after) 返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果 12 */ 13 public class Demo10Function { 14 public static void main(String[] args) { 15 //Lambda实现 16 /*convert("100", (String s) -> { 17 return Integer.parseInt(s); 18 });*/ 19 convert("100", s -> Integer.parseInt(s)); //100 20 21 //函数引用实现 22 convert("100", Integer::parseInt); //100 parseInt是Integer类中的静态方法 23 24 System.out.println("================================"); 25 convert(200, i -> String.valueOf(i+1)); // 201 String.valueOf将int转为str 26 27 System.out.println("================================"); 28 convert( 29 "999", 30 s -> Integer.parseInt(s), 31 i -> String.valueOf(i+1) 32 ); //1000 33 } 34 35 //把一个字符串转换int类型,在控制台输出 36 private static void convert(String str, Function<String, Integer> fun){ 37 // Integer i = fun.apply(str); 38 int i = fun.apply(str); //自动拆箱 39 System.out.println(i); 40 } 41 42 //把一个int类型的数据加上一个整数之后,转为字符串在控制台输出 43 private static void convert(int i, Function<Integer, String> fun){ //函数重载 44 String s = fun.apply(i); 45 System.out.println(s); 46 } 47 48 //把一个字符串转换int类型,把int类型的数据加上一个整数之后,转为字符串在控制台输出 49 private static void convert(String str, Function<String, Integer> fun1, Function<Integer, String> fun2){ //函数重载 50 /*Integer i = fun1.apply(str); 51 String s = fun2.apply(i); 52 System.out.println(s);*/ 53 54 String s = fun1.andThen(fun2).apply(str); //效果同上 55 System.out.println(s); 56 } 57 }
1 package day14.lesson1; 2 3 import java.util.function.Function; 4 5 /* 6 1.11 Function案例-按照指定要求操作数据 7 8 String s = "林青霞,30"; 9 请按照我指定的要求进行操作: 10 1:将字符串截取得到数字年龄部分 11 2:将上一步的年龄字符串转换成为int类型的数据 12 3:将上一步的int数据加70,得到一个int结果,在控制台输出 13 请通过Function接口来实现函数拼接 14 */ 15 public class Demo11Function { 16 public static void main(String[] args) { 17 String str = "林青霞,30"; 18 19 //Lambda实现 20 /*convert( 21 str, 22 (String s) -> { 23 return s.split(",")[1]; 24 }, 25 (String s) -> { 26 return Integer.parseInt(s); 27 }, 28 (Integer i) -> { 29 return i+70; 30 } 31 );*/ 32 convert( 33 str, 34 s -> s.split(",")[1], 35 s -> Integer.parseInt(s), 36 i -> i+70 37 ); //100 38 39 //Lambda+方法引用混合实现 40 convert( 41 str, 42 s -> s.split(",")[1], 43 Integer::parseInt, //方法引用 44 i -> i+70 45 ); //100 46 } 47 48 private static void convert( 49 String str, 50 Function<String, String> fun1, 51 Function<String, Integer> fun2, 52 Function<Integer, Integer> fun3 53 ){ 54 // Integer i = fun1.andThen(fun2).andThen(fun3).apply(str); 55 int i = fun1.andThen(fun2).andThen(fun3).apply(str); //自动拆箱 56 System.out.println(i); 57 } 58 }