首页 > 其他分享 >函数式接口-常见函数式接口-Function接口

函数式接口-常见函数式接口-Function接口

时间:2022-10-17 17:25:26浏览次数:59  
标签:Function return 函数 接口 字符串 change String

常见函数式接口

JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供

Function接口

Function<T,R>接口用于根据一个类型的数据得到另一个类型的数据 前者称为前置条件,后置条件

抽象方法:apply

Function接口中的最主要的抽象方法为

R apply(T t):根据类型T的参数获取类型R的结果

使用场景例如:将String类型转换为Integer类型

代码:

复制代码
 /*
    定义一个方法
    方法的参数传递一个字符串类型的整数
    方法的参数传递一个Function接口 泛型使用<String,Integer>
    使用Function接口中的方法apply 把字符串类型的整数 转换为Integer类型的整数
     */
public class Demo01Function {
    public static void change(String s, Function<String,Integer> fun){
        Integer apply = fun.apply(s);
        System.out.println(apply);
    }

    public static void main(String[] args) {
        // 定义一个字符串类型的整数
        String s = "1234";
        // 调用change方法 传递字符串类型的整数 和Lambda表达式
        change(s,(String str) -> {
            return Integer.valueOf(str);
        });
    }
}
复制代码

默认方法:andThen

Function接口中有一个默认的andThen方法 用来进行组合操作

代码:

  复制代码
/*
    定义一个方法
    参数串一个字符串类的整数
    参数在传递两个Funcion接口
    一个泛型使用Function<String,Integer>
    一个泛型使用Function<Integer,String>
     */
public class Demo02Function {
    public static void change(String s, Function<String, Integer> fun1, Function<Integer, String> fun2) {
        String ss = fun1.andThen(fun2).apply(s);
        System.out.println(ss);
    }

    public static void main(String[] args) {
        // 定义一个字符串类型的整数
        String s = "123";
        // 调用change方法 传递字符串和两个Lambda表达式
        change(s, (String str) -> {
            // 把字符串转换为整数+10
            return Integer.parseInt(str) + 10;
        }, (Integer o) -> {
            // 把整数转换为字符串
            return o + "";
        });

        // 优化lambda
        // 调用change方法 传递字符串和两个Lambda表达式
        change(s, (str) -> {
            // 把字符串转换为整数+10
            return Integer.parseInt(str) + 10;
        }, (o) -> {
            // 把整数转换为字符串
            return o + "";
        });
    }
}
复制代码

练习-自定义函数模型拼接

题目:

请使用Function进行函数模型的拼接 按照顺序需要执行的多个函数操作为:

Sting str="张三,20";

1.将字符串截取数字年龄部分 得到字符串

2.将上一步的字符串转换为int类型的数学

3.将上一步的int数字累加100 得到结果int数字

代码:

复制代码
/*
    定义一个方法
    参数传递包含名字和年龄的字符串
    参数再传递3个Function接口用于类型转换
     */
public class Demo03Function {
    public static int change(String s, Function<String,String> fun1,
                             Function<String,Integer> fun2,Function<Integer,Integer> fun3){
        // 使用andThen方法把三个转换组合到一起
        return fun1.andThen(fun2).andThen(fun3).apply(s);
    }

    public static void main(String[] args) {
        // 定义一个字符串
        String str="张三,20";
        // 调用change方法 参数传递字符串和3个lambda表达式
        int c = change(str, (String s) -> {
            return s.split(",")[1];
        }, (String s) -> {
            return Integer.parseInt(s);
        }, (Integer i) -> {
            return i + 100;
        });
        System.out.println(c);
    }
}
   

标签:Function,return,函数,接口,字符串,change,String
From: https://www.cnblogs.com/shenziyi/p/16798503.html

相关文章

  • 函数式接口-常见函数式接口-Predicate接口
    常见函数式接口JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见它们注意在java.util.function包中被提供Predicate接口有时候我们需要对某种类型的数据进......
  • 函数式接口-常见函数式接口-Consumer接口
    常见函数式接口JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见它们注意在java.util.function包中被提供Consumer接口Consumer<T>接口则正好与Supplier接口......
  • 函数式接口-常见函数式接口-Supplier接口
    常见函数式接口JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见它们注意在java.util.function包中被提供Supplier接口Supplier<T>接口仅包含一个无参的方......
  • 持续集成下接口自动化测试实践
    目前很多持续集成项目都需要执行接口层的测试,当你了解其基本概念,理解了接口协议、如何传参、测试原理后,无需掌握程序语言,使用行业内成熟的接口测试工具,就可以快速地......
  • js 外部调用 嵌套函数
     在函外部直接调用函数的内部函数是不可以的,因为是向外查找的 所以不能直接内部函数  functionone(){functiontwo(){varb=30;......
  • C语言零基础入门—函数-习题
    C语言零基础入门—函数-习题本节课的任务是:完成5道习题。下边的题目,都需要使用函数的知识来求解(也就是编写自定义函数求解)01-二元一次函数求解求方程​​ax^2+bx+c=......
  • mysql 中使用 CONCAT 函数进行结果拼接时出现乱码问题
    今天在mysql中使用CONCAT()函数进行结果拼接时出现了乱码问题,如下图所示:  后来发现是因为不同类型的字段进行拼接造成的应使用convert()函数进行类型转换,把非字......
  • ctfshow web99(in_array函数漏洞)
    <?phphighlight_file(__FILE__);$allow=array();//设置为数组for($i=36;$i<0x36d;$i++){array_push($allow,rand(1,$i));//向数组里面插入随机数}if(isset......
  • python中的range()函数
    range()函数:用于生成一个整数序列; range()的三种创建方式: 第一种:只有一个参数(小括号中只给了一个数)即range(stop)  例如:range(10)指的是默认从0开始,步长为1,不包括10......
  • 数仓性能调优:如何进行函数下推
    摘要:本文主要描述下函数在满足特征的前提下可以把函数属性定义为下推属性。本文分享自华为云社区《GaussDB(DWS)性能调优:函数下推》,作者:譡里个檔。DWS作为MPP架构的数仓......