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 @   yub4by  阅读(64)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示