> 文章列表 > 常用的函数式接口——Consumer

常用的函数式接口——Consumer

常用的函数式接口——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