首页 > 其他分享 >函数式接口-常见函数式接口-Supplier接口

函数式接口-常见函数式接口-Supplier接口

时间:2022-10-17 17:23:16浏览次数:47  
标签:函数 get 接口 泛型 Supplier Lambda String

常见函数式接口

JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供

Supplier接口

Supplier<T>接口仅包含一个无参的方法:T get() 用来获取一个泛型参数指定类型的UI对象数据 由于这是一个函数式接口 这也意味着对应的Lambda表达式需要对外提供 一个符合泛型类型的对象数据

Supplier<T>接口被称之为生产型接口 指定接口的泛型是什么类型 那么接口中的get方法就会生产什么类型的数据

代码:

复制代码
 //定义一个方法 方法的参数传递Supplier<T>接口 泛型执行String get方法就会返回一个String
    public static String getString(Supplier<String> sup){
        return sup.get();
    }

    public static void main(String[] args) {
        //调用getString方法的参数Supplier是一个函数式接口 所以可以传递Lambda表达式
       String s=getString(()->{
            return "胡歌";
        });
        System.out.println(s);
        //优化Lambda
        String s1=getString(()->"张三");
        System.out.println(s1);
    }
复制代码

运行结果:

练习:求数组元素最大值

题目:

使用Supplier接口作为方法参数类型 通过Lambda表达式求出int数组中的最大值 提示:接口的泛型请使用java.lang.Integer类

代码:

复制代码
public class Demo02Supplier {
    //定义一个方法 方法的参数传递Supplier<T>接口 泛型执行int get方法就会返回一个int
    public static Integer getInteger(Supplier<Integer> sup){
        return sup.get();
    }

    public static void main(String[] args) {
        int[] arr={10,20,50,30,40};

        //调用getInteger方法的参数Supplier是一个函数式接口 所以可以传递Lambda表达式
        Integer maxArr = getInteger(() -> {
            int max = arr[0];
            for (int i = 0; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i];
                }
            }
            return max;
        });
        System.out.println(maxArr);
    }
}
复制代码

运行结果:

标签:函数,get,接口,泛型,Supplier,Lambda,String
From: https://www.cnblogs.com/shenziyi/p/16798473.html

相关文章

  • 持续集成下接口自动化测试实践
    目前很多持续集成项目都需要执行接口层的测试,当你了解其基本概念,理解了接口协议、如何传参、测试原理后,无需掌握程序语言,使用行业内成熟的接口测试工具,就可以快速地......
  • js 外部调用 嵌套函数
     在函外部直接调用函数的内部函数是不可以的,因为是向外查找的 所以不能直接内部函数  functionone(){functiontwo(){varb=30;......
  • C语言零基础入门—函数-习题
    C语言零基础入门—函数-习题本节课的任务是:完成5道习题。下边的题目,都需要使用函数的知识来求解(也就是编写自定义函数求解)01-二元一次函数求解求方程​​ax^2+bx+c=......
  • mysql 中使用 CONCAT 函数进行结果拼接时出现乱码问题
    今天在mysql中使用CONCAT()函数进行结果拼接时出现了乱码问题,如下图所示:  后来发现是因为不同类型的字段进行拼接造成的应使用convert()函数进行类型转换,把非字......
  • ctfshow web99(in_array函数漏洞)
    <?phphighlight_file(__FILE__);$allow=array();//设置为数组for($i=36;$i<0x36d;$i++){array_push($allow,rand(1,$i));//向数组里面插入随机数}if(isset......
  • python中的range()函数
    range()函数:用于生成一个整数序列; range()的三种创建方式: 第一种:只有一个参数(小括号中只给了一个数)即range(stop)  例如:range(10)指的是默认从0开始,步长为1,不包括10......
  • 数仓性能调优:如何进行函数下推
    摘要:本文主要描述下函数在满足特征的前提下可以把函数属性定义为下推属性。本文分享自华为云社区《GaussDB(DWS)性能调优:函数下推》,作者:譡里个檔。DWS作为MPP架构的数仓......
  • js 简单封装一个像python中的range函数
    functionrange(start,end,step){letarr=[];for(leti=start;i<end;i++){if(i%step==0){arr.push(i)}}returnarr;}letarr=range(0,60,5);conso......
  • 使用async与await的异步函数同步化
    async与await当ajax需要按顺序出场时,需要用到async与await方法了async放在函数的前面表示此函数是一个异步函数  await放在async的内部 公示当前代码应该做......
  • php 常用工具函数
    返回时间戳差值部分,年、月、日functionget_date_diff($startstamp,$endstamp,$return='m'){$y=date('Y',$endstamp)-date('Y',$startstamp);$m=d......