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

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

时间:2022-08-21 17:23:29浏览次数:70  
标签:con1 con2 函数 接口 accept Consumer String

常见函数式接口

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

Consumer接口

Consumer<T>接口则正好与Supplier接口相反 它不是生成一个数据 而是消费一个数据 其数据类型由泛型决定

抽象方法:accept

Consumer接口中包含抽象方法void accept(T t),意为消费一个指定泛型的数据

代码:

public class BConsumer {
    public static void consumeString(String name,Consumer<String> con){
        con.accept(name);
    }
    public static void main(String[] args) {
        //调用consumeString方法,传递字符串姓名,方法的另一个参数是Consumer接口,是一个函数式接口,所以可以传递Lambda表达式
        consumeString("赵丽颖", (String name)->{
            /*
                对传递的字符串进行消费
                消费方式:直接输出字符串
             */
//            System.out.println(name);
            //消费方式:把字符串进行反转输出
            String s = new StringBuffer(name).reverse().toString();
            System.out.println(s);
        });
    }
}

 

默认方法:andThen

如果一个方法的参数和返回值全都是Consumer类型 那么可以实现效果 消费数据的时候 首先做一个操作 然后再做一个操作 实现组合 而这个方法就是Consumer接口中的default方法andThem

作用:需要两个Consumer接口 可以把两个ConSumer接口组合到一起 在对数据进行消费

例如:

consumer<String> con1

consumer<String> con2

String s="hello"

con1.accept(s);

con2.accept(s);

连接两个Consumer接口 再进行消费

con1.andThen(con2).accept(s);谁写前边谁先消费

代码:

public class BAndThen {
    //定义一个方法,方法的参数传递一个字符串和两个Consumer接口,Consumer接口的泛型使用字符串
    public static void method(String s, Consumer<String> con1,Consumer<String> con2){
        con1.accept(s);
        con2.accept(s);
        System.out.println("---------------");
        //使用andThen方法,把两个Consumer接口连接到一起,在消费数据
        con1.andThen(con2).accept(s);//con1连接con2,先执行con1消费数据,在执行con2消费数据
    }
    public static void main(String[] args) {
        //调用method方法,传递一个字符串,两个Lamdba表达式
        method("Hello",
                (t)->{
                    //消费方式:把字符串转换为大写输出
                    System.out.println(t.toUpperCase());
                },
                (t)->{
                    //消费方式:把字符串转换为小写输出
                    System.out.println(t.toLowerCase());
        });
    }
}

运行结果:

 

 

 

练习:格式打印信息

题目:

下面的字符串数组当中存有多条信息 请按照格式“姓名:xx。性别:xx”的格式将信息打印出来 要求将打印姓名的动作作为第一个Consumer接口的Lambda实例 将打印性别的动作作为第二个Consumer接口的Lambda实例 将两个Consumer接口拼接到一起

代码:

public class BConsumer2 {
    //定义一个方法,参数传递String类型的数组和两个Consumer接口,泛型使用String
    public static void pringInfo(String[] arr, Consumer<String> con1,Consumer<String> con2){
        //遍历字符串数组
        for (String s : arr) {
            con1.andThen(con2).accept(s);
        }
    }

    public static void main(String[] args) {
        //定义一个字符串类型的数组
        String[] arr = {"迪丽热巴,女","古力娜扎,女","马尔扎哈,男"};
        //调用pringInfo方法,传递一个字符串数组,和两个Lambda表达式
        pringInfo(arr,s -> {
            //消费方式:对s进行切割,获取姓名,按照指定的格式输出
            String name = s.split(",")[0];
            System.out.print("姓名:"+name);
        }, s -> {
            //消费方式:对s进行切割,获取年龄,按照指定的格式输出
            String age = s.split(",")[1];
            System.out.print(",年龄:"+age+",");
        });
    }
}

运行结果:

 

 

 

public class BAndThen {
//定义一个方法,方法的参数传递一个字符串和两个Consumer接口,Consumer接口的泛型使用字符串
public static void method(String s, Consumer<String> con1,Consumer<String> con2){
con1.accept(s);
con2.accept(s);
System.out.println("---------------");
//使用andThen方法,把两个Consumer接口连接到一起,在消费数据
con1.andThen(con2).accept(s);//con1连接con2,先执行con1消费数据,在执行con2消费数据
}
public static void main(String[] args) {
//调用method方法,传递一个字符串,两个Lamdba表达式
method("Hello",
(t)->{
//消费方式:把字符串转换为大写输出
System.out.println(t.toUpperCase());
},
(t)->{
//消费方式:把字符串转换为小写输出
System.out.println(t.toLowerCase());
});
}
}

标签:con1,con2,函数,接口,accept,Consumer,String
From: https://www.cnblogs.com/qihaokuan/p/16610283.html

相关文章

  • Oracle 常用函数
     单行函数操作数据对象接受参数返回一个结果 只对一行进行变换 每行返回一个结果可以转换数据类型可以嵌套参数可以是一列或一个值 格式 字符......
  • 软件测试入门八(测试需要对接口的了解)
    一、什么是接口开发方:后段开发,人们常说的Java开发使用方:前端开发,人们常说的vue、h5、安卓、iOS等等举一个简单的例子:百度搜索的接口当用户想要搜索他需要的内容时,用户......
  • 生成函数
    生成函数(母函数)对于一个数列$A=${$a_0,a_1,a_2,a_3,...$},存在函数$$F(x)=\sum_{i=0}^{\infty}a_i*x^i$$则称函数$F(x)$为数列$A$的生成函数(母函数)。需要注意的是生......
  • API 应用程序编程接口 (Unity)
    Unity5.6.0f31,如何查看APIHelp——> UnityManual——>ScriptingReference 模块化下载安装2,什么是事件函数MonoBehaviour继承自Behaviour继承自Compon......
  • 关于Android中接口Reponse反序列化的思考
    总结kotlindataclass返回值最佳实践,使用ks!字段全写默认值,不可空,取消全部问号!ks速度更快并且支持N多数据类型protobuf+jsonkt默认值只有两种方式可以获取使用k......
  • 函数式接口-常见函数式接口-Supplier接口
    常见函数式接口 Supplier接口:java.util.function.Supplier<T>接口仅包含一个无参的方法:Tget()。用来获取一个泛型参数指定类型的对象数据。Supplier<T>接口被称之为生......
  • Java学习 (25) 对象篇(05)抽象类&接口
    目录抽象类语法实例注意点具体讲解视频(狂神说Java)接口语法实例具体讲解视频(狂神说Java)抽象类abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是......
  • SpringBoot框架:配置项目在访问后台端口时默认跳转的接口或页面
    一、配置一般需要这种配置的都是前后端一体的项目,在通过后台端口访问时需要默认跳转到某个指定的接口,或者跳转到某个执行的接口。实现WebMvcConfigurer接口,重写a......
  • C语言里的函数 (学习笔记)
    看到CSDN里一篇详解,认为可用,抄录下来以备查询。(https://blog.csdn.net/qq_43469639/article/details/123765064)1、函数是什么在维基百科中,对于函数的定义是子程序。子程......
  • 请求接口一直404
    今天写一个我自己网站的服务器然后老是请求报错404,几乎所有接口都是404唯有一个@GetMapping(value="/allEmp",produces="application/json;charset=utf-8")@Respon......