常用的函数式接口——Consumer
Consumer
void accept(T t):对给定的参数执行此操作
default Consumer
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