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 }

 

posted @ 2021-06-17 14:31  yub4by  阅读(76)  评论(0编辑  收藏  举报