JavaSE-23.1.2【常用函数式接口之Supplier、Supplier案例-获取最大值】

 1 package day14.lesson1;
 2 
 3 import java.util.function.Supplier;
 4 
 5 /*
 6 1.4 常用函数式接口之Supplier
 7 
 8     JDK8在java.util.function包中预定义了大量函数式接口
 9     重点学习四个:Supplier、Consumer、Predicate、Function
10 
11     Supplier接口
12         Supplier<T>接口也被称为生产型接口,
13         如果我们指定了接口的泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用。
14 
15     常用方法
16         只有一个无参的方法
17         T get() 按照某种实现逻辑(由Lambda表达式实现)返回一个数据
18  */
19 public class Demo4Supplier {
20     public static void main(String[] args) {
21         /*String str = getString(() -> {
22             return "输的什么液?想你的夜!";
23         });*/
24         String str = getString(() -> "输的什么液?想你的夜!");
25         System.out.println(str); // 输的什么液?想你的夜!
26 
27         Integer i = getInteger(() -> 30);
28         System.out.println(i); // 30
29     }
30 
31     // 返回一个整型数据
32     private static Integer getInteger(Supplier<Integer> sup){
33         return sup.get();
34     }
35 
36     // 返回一个字符串数据
37     private static String getString(Supplier<String> sup){
38         return sup.get();
39     }
40 }

 

 

 1 package day14.lesson1;
 2 
 3 import java.util.function.Supplier;
 4 
 5 /*
 6 1.5 Supplier案例-获取最大值
 7 
 8     案例需求
 9         定义一个类(SupplierTest),在类中提供两个方法
10         一个方法是:int getMax(Supplier sup) 用于返回一个int数组中的最大值
11         一个方法是主方法,在主方法中调用getMax方法
12  */
13 public class Demo5Supplier {
14     public static void main(String[] args) {
15         int[] arr = {19, 5, 20, 37, 49};
16 
17         int maxValue = getMax(() -> {
18             int max = arr[0];
19 
20             for (int i=1; i<arr.length; i++){
21                 if(arr[i] > max){
22                     max = arr[i];
23                 }
24             }
25 
26             return max;
27         });
28 
29         System.out.println(maxValue);
30     }
31 
32     private static int getMax(Supplier<Integer> sup){
33         return sup.get();
34     }
35 }

 

posted @ 2021-06-16 21:15  yub4by  阅读(63)  评论(0编辑  收藏  举报