1、使用Supplier接口的代码:
import java.util.function.Supplier;
public class SupplierTest {
public static int getMax(Supplier<Integer> sup){
// sup 只有一个 get 方法,只需要重写这个方法
return sup.get();
}
public static void main(String[] args) {
int arr[] = {3,5,9,1};
// 重写Supplier接口的get方法
System.out.println(getMax(()->{
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if(max < arr[i])max = arr[i];
}
return max;
}));
}
}
2、个人对这两个接口的理解:
两个接口名为生产者接口和消费者接口;
实际上就是一个有返回值,一个没有返回值;
在参数为接口实例对象的方法体中要用实例的抽象方法;
Supplier就是sup.get(), Consumer就是con.accept(变量);
参考资料:Java常用函数式接口–Consumer接口使用案例
Java常用函数式接口–Consumer接口使用案例
3、使用 Consumer 接口的 Lambda 方法,将字符数组里面的信息按照指定格式打印
import java.util.function.Consumer;
public class ConsumerTest {
public static void main(String[] args) {
// 使用 Consumer 接口的 Lambda 方法,将字符数组里面的信息按照指定格式打印
String[] arr = {"迪丽热巴,女","古力娜扎,女","马儿扎哈,男"};
printInfo(arr,(message)->{
String name = message.split(",")[0];
System.out.print(name + ",");
},(message)->{
String sex = message.split(",")[1];
System.out.print(sex + "。");
});
}
public static void printInfo(String[] arr, Consumer<String> con1,Consumer<String> con2){
for (String message : arr) {
con1.andThen(con2).accept(message);
}
}
}
/*
注意:
1、使用字符串的 split 方法时,要区分里面的中文逗号和英文逗号;
2、con1.andThen(con2).accept(message);要记住这样的格式;
*/
4、学习这三种接口的学习指南
接口是什么;Predicate
接口里的方法是什么;Predicate - test
接口实例是什么;Predicate pre
参数为接口实例的方法是什么; 参数中有Predicate pre和T类型的变量,返回值为布尔值
主方法中对“参数为接口实例方法”的调用;