常用的函数式接口_Consumer接口练习_字符串拼接输出与常用的函数式接口_Predicate接口
练习:格式化打印信息
题目:下面的字符串数组当中存有多条信息,请按照格式“ 姓名:XX。性别:XX。”的格式将信息打印出来。要求将打印姓名的动作作为第一个Consumer 接口的Lambda实例,将打印性别的动作作为第二个Consumer 接口的Lambda实例,将两个Consumer 接口按照顺序“拼接”到一起。
1 package day01.Demo01_Day016; 2 3 import java.util.function.Consumer; 4 5 /* 6 3.练习: 7 字符串数组当中存有多条信息,请按照格式“姓名:XX。性别:XX。”格式将信息打印出来。 8 要求将打印姓名的动作作为第一个Consumer接口的Lambda实例, 9 将打印性别的动作作为第二个Consumer接口的Lambda实例, 10 将两个Consumer接口按照顺序“拼接”到一起。 11 */ 12 public class DemoConsumer { 13 //定义一个方法,参数传递String类型的数组和两个Consumer接口,泛型使用String 14 public static void method(String[] arr,Consumer<String> con1,Consumer<String> con2){ 15 //遍历字符串 16 for (String s : arr) { 17 //使用andTher方法连接两个Consumer接口,消费字符串 18 con1.andThen(con2).accept(s); 19 } 20 } 21 public static void main(String[] args) { 22 //定义一个字符串类型的数组; 23 String[] arr ={"迪丽热巴,女","古力娜扎,女","马儿扎哈,男"}; 24 //调用printInfo方法,传递一个字符串数组,和两个Lambda表达式 25 method(arr, 26 (m)->{ 27 //消费方式:对message进行切割,获取姓名,按照指定的格式输出 28 String name =m.split(",")[0]; 29 System.out.print("姓名"+name); 30 }, 31 (m)->{ 32 String age =m.split(",")[1]; 33 System.out.println("。性别"+age+"。"); 34 }); 35 } 36 }
函数式接口Predicate接口
有时候我们需要对某种类型的数据进行判断,从而得到一个boolean值结果。这时可以使用java.util.function.Predicate<T>接口。
抽象方法:test
Predicate 接口中包含一个抽象方法:boolean test(T t)。用于条件判断的场景
1 package day01.Demo01_Day016; 2 3 import java.util.function.Predicate; 4 5 /* 6 java.util.function.Predicate<T>接口。 7 8 Predicate接口包含一个抽象方法 9 boolean test(T t):用来对指定数据类型数据进行判断的方法 10 结果: 11 符合条件,:返回true 12 不符合条件:返回false 13 */ 14 public class Demo01Predicate { 15 /* 16 定义一个方法 17 参数传递一个String;类型的字符串 18 传递一个Predicate接口,泛型使用String 19 使用Predicate中的方法test对字符串进行判断,并把判断的结果返回 20 */ 21 public static boolean checkString(String s, Predicate<String> pre){ 22 return pre.test(s); 23 } 24 25 public static void main(String[] args) { 26 //定义一个字符串 27 String s ="wuyi"; 28 /* 29 boolean b =checkString(s,(String str)->{ 30 //对参数传递的字符串进行判断,判断字符串的长度是否大于5,并把判断结果返回 31 return str.length()>5; 32 }); 33 */ 34 //优化Lambda表达式 35 boolean b =checkString(s,str->str.length()>5); 36 System.out.println(b); 37 } 38 }