常用函数式接口_Supplier
Java8在java.util.function包下预定义了大量的函数式接口供我们使用
我们重点来学习下面的4个接口: 1、Supplier接口 2、Consumer接口 3、Predicate接口 4、Function接口
Supplier接口在java.util.function包下。该接口有一个泛型,即我们看到的
Supplier
常用函数式接口_Supplier的练习
xxxxxxxxxx
package ch25;
import java.util.function.Supplier;
public class a_4_1测试 {
public static void main(String[] args) {
//通过Supplier接口产生数据
//虚线下面的getString方法的参数是一个函数式接口,我们可以使用Lambda作为参数传递
String s = getString(()->{//因为最下面那个getString方法会返回一个字符串,所以我们还需要接收一下
return "张三";
});
System.out.println(s);
//由于上面的Lambda表达式只有一条输出语句,所以我们可以优化一下,如下
String s2 = getString(()->"张三2");
System.out.println(s2);
System.out.println("-------------------");
//-------------------------------------------------------------------------------------------
//我们来使用一下下面写好的getInteger方法。直接使用了Lambda的省略模式
Integer i = getInteger(()->100);
System.out.println(i);
}
//------------------------------------------------------------------------------------------------------------------
//定义一个方法返回一个字符串数据
private static String getString(Supplier<String> sup){//我们定义了一个方法,方法的参数是Supplier接口
//即函数式接口作为方法的参数,可以去上上节再复习一遍哦
return sup.get();
}
//定义一个方法返回一个整数数据
//下面那行的类型写int其实也可以,因为系统会自动帮我们装箱为Integer。不过还是建议直接写Integer
private static Integer getInteger(Supplier<Integer> sup){
return sup.get();
}
}
Supplier接口_获取最大值
练习:
定义一个测试类,在测试类里面定义一个方法int getMax(Supplier
Supplier接口_获取最大值的练习
xxxxxxxxxx
package ch25;
import java.util.function.Supplier;
public class a_5_1测试 {
public static void main(String[] args) {
//定义一个数组
int arr[] = {2, 6, 0, 3, 5, 1, 7, 4, 8, 10, 9};
//getMax方法的参数是一个函数式接口,我们可以使用Lambda作为参数传递
//调用最下面写好的getMax方法
int maxValue = getMax(() -> {//因为最下面那个getMax方法会返回一个int类型的数据,所以我们还需要接收一下
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
});
//注意,上面的Lambda表达式是多条语句,我们不能使用Lambda的省略模式了哦
System.out.println(maxValue);
}
//定义一个方法,作用是返回一个int数组中的最大值
//下面那行的类型写成了int,其实也可以,因为系统会自动帮我们装箱为Integer。不过还是建议直接写Integer
private static int getMax(Supplier<Integer> sup) {
return sup.get();//注意这里不写具体的实现int数组中最大值的代码,我们是要在Lambda表达式里面写实现代码
}
}