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 }
