Function接口主要用来做数据转换,根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。
Function接口的方法: ①抽象方法 R apply(T t) 将参数t的数据类型从T类型转换为R类型 ②默认方法 andThen 该方法是先做前一步操作接着做下一步操作
使用演示: ①有一个字符串,把数字部分提取出来 ②把字符串的数字转换成数字类型 ③将得到的数据进行操作
public static void main(String[] args) { String str = “HelloWorld,100”; Function<String, String> f1 = new Function<>() { @Override public String apply(String s) { return s.split(",")[1]; } }; Function<String, Integer> f2 = new Function<>() { @Override public Integer apply(String s) { return Integer.parseInt(s); } }; Function<Integer, Integer> f3 = new Function<>() { @Override public Integer apply(Integer integer) { return integer += 100; } }; Integer apply = f1.andThen(f2).andThen(f3).apply(str); System.out.println(apply); }
Function<T,R>接口通常用于对参数进行处理,转换(处理逻辑由Lambda表达式实现),然后返回一个新的值。 public class FunctionDemo { public static void main(String[] args) { convert(“100”, s -> Integer.parseInt(s)); 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> function) { Integer i = function.apply(s); System.out.println(i); }
//定义一个方法,把一个int类型的数据加上一个整数后,转为字符串在控制台输出 private static void convert(int i, Function<Integer, String> function) { String s = function.apply(i); System.out.println(s); }
//定义一个方法,把一个字符串转为int类型,把一个int类型的数据加上一个整数后,转为字符串在控制台输出 private static void convert(String s, Function<String, Integer> function1, Function<Integer, String> function2) { String ss = function1.andThen(function2).apply(s); System.out.println(ss); } } 输出结果为:
|