函数式接口与Stream流
1.函数式接口概念与定义
ps(
)
2.1性能浪费日志案例
根据上面代码发现性能浪费问题
2.2使用Lambda优化日志案例
定义一个日志信息的函数式接口
测试
综上可得结论
3.1.1常用函数式接口----Supplier接口
3.1.2常用函数式接口----Supplier接口(练习)
题目
代码
打印结果截图
3.2.1常用函数式接口----Consumer接口
3.2.2常用函数式接口----Consumer接口默认方法andThen
代码
package learn.functionInterface.demo2;
import java.util.function.Consumer;
/**
* @ClassName ConsumerAndThenDemo
* @Description TODO
* @Author Administrator
* @Date 2020/11/10 18:46
* @Version 1.0
**/
public class ConsumerAndThenDemo {
public static void method(String s, Consumer<String> con1, Consumer<String> con2) {
/*1. con1.accept(s);
con2.accept(s);*/
//2. con1.andThen(con2)等价于步骤1.,con1和con2谁写前面就先消费谁
con1.andThen(con2).accept(s);
}
public static void main(String[] args) {
method("hello",
(str) -> {
System.out.println(str.toUpperCase());
},
(str) -> {
System.out.println(str.toLowerCase());
});
}
}
打印结果截图
3.2.3常用函数式接口----Consumer接口(练习)
题目:格式化打印信息
代码
package learn.functionInterface.demo2;
import java.util.function.Consumer;
/**
* @ClassName ConsumerDemo3
* @Description TODO
* @Author Administrator
* @Date 2020/11/10 19:00
* @Version 1.0
**/
public class ConsumerDemo3 {
public static void formatNameAge(String[] arr, Consumer<String> con1, Consumer<String> con2) {
for (String str : arr) {
con1.andThen(con2).accept(str);
}
}
public static void main(String[] args) {
String[] arr = {
"迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男"};
formatNameAge(arr,
(message) -> {
String name = message.split(",")[0];
System.out.print("姓名:" + name + "。");
},
(message) -> {
String age = message