常用的函数式接口——Consumer

常用的函数式接口——Consumer

Consumer<T>:包含两个方法

        void accept(T t):对给定的参数执行此操作

        default Consumer<T> andThen(Consumer after):返回一个组合的Consumer,依次执行操作,然后执行after操作

        Consumer<T>接口也被称为消费型接口,它消费的数据的数据类型由泛型指定

package com.aynu24;

//Consumer<T>:包含两个方法
//
//         void accept(T t):对给定的参数执行此操作
//
//         default Consumer<T> andThen(Consumer after):返回一个组合的Consumer,依次执行操作,然后执行after操作
//
//         Consumer<T>接口也被称为消费型接口,它消费的数据的数据类型由泛型指定

import java.util.function.Consumer;

public class ConsumerDemo {
    public static void main(String[] args) {
//        operatorString("林青霞",(String s)->{
//            System.out.println(s);
//        });

        operatorString("林青霞", s -> System.out.println(s));
//        operatorString("林青霞",System.out::println);

//        operatorString("林青霞",s -> {
//            System.out.println(new StringBuilder(s).reverse().toString());
//        });

        operatorString("林青霞", s ->
                System.out.println(new StringBuilder(s).reverse().toString()));
        System.out.println("--------");
        operatorString("林青霞", s -> System.out.println(s), s -> System.out.println(new StringBuilder(s).reverse().toString()));
    }

    //定义一个方法,用不同的方式消费同一个字符串数据两次
    private static void operatorString(String name, Consumer<String> con1, Consumer<String> con2) {
//        con1.accept(name);
//        con2.accept(name);
        con1.andThen(con2).accept(name);
    }


    //定义一个方法,消费一个字符串数据
    private static void operatorString(String name, Consumer<String> con) {
        con.accept(name);
    }
}

林青霞
霞青林
--------
林青霞
霞青林 


 练习

        String[] strArray = {"林青霞,30","张曼玉,35","王祖贤,33"};

        字符串数组中有多条信息,请按照格式:"姓名:xx,年龄:xx"的格式将信息打印出来

        要求:

                把打印姓名的动作作为第一个Consumer接口的Lambda实例

                把打印年龄的动作作为第一个Consumer接口的Lambda实例

                将两个Consumer接口按照顺序组合到一起使用

package com.aynu24;

//    练习
//
//         String[] strArray = {"林青霞,30","张曼玉,35","王祖贤,33"};
//
//         字符串数组中有多条信息,请按照格式:"姓名:xx,年龄:xx"的格式将信息打印出来
//
//         要求:
//
//            把打印姓名的动作作为第一个Consumer接口的Lambda实例
//
//            把打印年龄的动作作为第一个Consumer接口的Lambda实例
//
//            将两个Consumer接口按照顺序组合到一起使用

import java.util.function.Consumer;

public class ConsumerTest {
    public static void main(String[] args) {

           String[] strArray = {"林青霞,30","张曼玉,35","王祖贤,33"};
//
//        printInfo(strArray,(String str)->{
//           String name= str.split(",")[0];
//            System.out.print("姓名:"+name);
//        },(String str)->{
//            int age=Integer.parseInt(str.split(",")[1]);
//            System.out.println(",年龄:"+age);
//        });

        printInfo(strArray,str -> System.out.print("姓名:"+str.split(",")[0]),
                str -> System.out.println(",年龄:"+Integer.parseInt(str.split(",")[1])));
    }

    private static void printInfo(String[] strArray, Consumer<String> con1,Consumer<String> con2){
        for (String str:strArray){
            con1.andThen(con2).accept(str);
        }
    }
}

姓名:林青霞,年龄:30
姓名:张曼玉,年龄:35
姓名:王祖贤,年龄:33 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iuiu啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值