常用的函数式接口——Consumer

常用的函数式接口——Consumer

Consumer:包含两个方法

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

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

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

package com.aynu24;

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

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 con1, Consumer con2) {
//        con1.accept(name);
//        con2.accept(name);
        con1.andThen(con2).accept(name);
    }


    //定义一个方法,消费一个字符串数据
    private static void operatorString(String name, Consumer 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 con1,Consumer con2){
        for (String str:strArray){
            con1.andThen(con2).accept(str);
        }
    }
}

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

你可能感兴趣的:(java,开发语言)