邯城往事

>>> 展颜笑夙愿,一笑泯恩仇 <<<

目录
JDK8 函数式接口Consumer
/  

JDK8 函数式接口Consumer

题目

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

String [] str = {"迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男"};

代码实现

import java.util.function.Consumer;

/**
 * @author xuyuntong
 * @date 2021/1/14 10:20
 */
public class testmain {

    public static void main(String[] args) throws Exception {

        String [] str = {"迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男"};

        Consumer<String> nameConsumer = testmain::printName;
        Consumer<String> sexConsumer = testmain::printSex;

        for (String s : str) {
            //当两个Consumer的参数一样时,可以用andThen方法来同时执行两个函数,并且将按照顺序执行
            //如果需要consumer传递多个参数,需要封装成一个对象,因为consumer只支持一个参数,所以要把多个参数封装成一个参数
            nameConsumer.andThen(sexConsumer).accept(s);
        }
    }

    public static void printName(String name){

        String[] split = name.split(",");
        System.out.print(split[0] + ": ");
    }

    public static void printSex(String sex){

        String[] split = sex.split(",");
        System.out.println(split[1]);
    }
}
评论
取消