Function<T,R>:常用的两个方法
R apply(T t):将此函数应用于给定的参数
default<V> Function andThen(Function after): 返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果
Function<T,R>接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值
package com.aynu24;
//Function<T,R>:常用的两个方法
//
// R apply(T t):将此函数应用于给定的参数
// default<V> Function andThen(Function after): 返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果
// Function<T,R>接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值
import java.util.function.Function;
public class FunctionDemo {
public static void main(String[] args) {
// convert("100",(String s)->{
// return Integer.parseInt(s);
// });
convert("100", s ->
Integer.parseInt(s));
// convert("100",Integer::parseInt);
convert(100, i -> String.valueOf(i + 566));
convert("100", s -> Integer.parseInt(s), i -> String.valueOf(i + 566));
}
//定义一个方法,把一个字符串转换int类型,在控制台输出
private static void convert(String s, Function<String, Integer> fun) {
// Integer i= fun.apply(s);
int i = fun.apply(s);
System.out.println(i);
}
//定义一个方法,把一个int类型的数据加上一个整数之后,转为字符串在控制台输出
private static void convert(int i, Function<Integer, String> fun) {
String s = fun.apply(i);
System.out.println(s);
}
//定义一个方法,把一个字符串转换为int类型,把int类型数据加上一个整数之后,转为字符串在控制台上
private static void convert(String s, Function<String, Integer> fun1, Function<Integer, String> fun2) {
// Integer i = fun1.apply(s);
// String ss = fun2.apply(i);
// System.out.println(ss);
String ss= fun1.andThen(fun2).apply(s);
System.out.println(ss);
}
}
100
666
666
练习:
String s="林青霞,30";
请按照我指定的要求进行操作
将字符串截取得到数字年龄部分
将上一步的年龄字符串转换成为int类型的数据
将上一步的int数据加70,得到一个int结果,在控制台输出
请通过Funtion接口来实现函数拼接
package com.aynu24;
//练习:
// String s="林青霞,30";
// 请按照我指定的要求进行操作
// 将字符串截取得到数字年龄部分
// 将上一步的年龄字符串转换成为int类型的数据
// 将上一步的int数据加70,得到一个int结果,在控制台输出
// 请通过Funtion接口来实现函数拼接
import java.util.function.Function;
public class FunctionTest {
public static void main(String[] args) {
String s = "林青霞,30";
// convert(s,(String ss)->{
// return s.split(",")[1];
// },(String ss)->{
// return Integer.parseInt(ss);
// },(Integer i)->{
// return i+70;
//
// });
// convert(s, ss -> ss.split(",")[1], ss -> Integer.parseInt(ss), i -> i + 70);
convert(s, ss -> ss.split(",")[1],Integer::parseInt, i -> i + 70);
}
private static void convert(String s, Function<String, String> fun1, Function<String, Integer> fun2, Function<Integer, Integer> fun3) {
// Integer i= fun1.andThen(fun2).andThen(fun3).apply(s);
int i = fun1.andThen(fun2).andThen(fun3).apply(s);
System.out.println(i);
}
}
100