函数式接口的介绍和使用(FunctionInterface)——Consumer,Supplier,Predicate、Function

18 篇文章 2 订阅
订阅专栏
4 篇文章 0 订阅
订阅专栏
文章介绍了Java8引入的函数式接口概念,包括Consumer、Supplier、Predicate和Function接口的用法,以及它们如何与Lambda表达式结合,用于数据消费、生成、判断和转换等操作。
摘要由CSDN通过智能技术生成

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

函数式接口可以被隐式转换为 lambda 表达式。

函数式接口都添加了 @FunctionalInterface 注解,这个是jdk1.8才引进的。例如
在这里插入图片描述

因为函数式接口里面只是提供了一个抽象的方法,所以在使用时,一般都会使用 lambda 表达式,这个也是jdk1.8才引进的

在JDK中,常见的函数式接口分为四类,分别是

  • 消费型函数式接口 Consumer 常用于遍历 void accpet(T t)
  • 供给型函数式接口 Supplier 用于产生数据 == T get() ==
  • 断言型函数式接口 Predicate 用于判断 == boolean test(T t) ==
  • 函数型函数式接口 Function<T,R> 用于逻辑处理 == R apply(T t) ==

Consumer

在这里插入图片描述

可以看出 Consumer函数式接口提供的抽象方法为 void accept(T t),有参数,没有返回值。具体的使用方法如下:

     public static void main(String[] args) {
         Consumer consumer = new Consumer<Object>() {
             @Override
             public void accept(Object o) {
                 System.out.println("o = " + o);
             }
         };
 ​
         consumer.accept("我是消费式函数接口");
     }//运行结果
 o = 我是消费式函数接口

可以看出,传入了参数,没有返回值,故称为消费型

Supplier:无中生有

在这里插入图片描述

具体的使用方法如下:

    public static void main(String[] args) {
         Supplier<String> supplier = new Supplier<String>() {
             @Override
             public String get() {
                 return "我是一个私生子";
             }
         };
         String s = supplier.get();
         System.out.println("s = " + s);
     }//运行结果
 s = 我是一个私生子

可以看出,没有传递任何参数,但是有返回值,无中生有产生了数据。

Predicate

在这里插入图片描述
Predicate里面给出的抽象方法有参数,返回值为boolean,就是对数据进行校验,具体使用方法如下:

     public static void main(String[] args) {
         Predicate<String> predicate = new Predicate<String>() {
             @Override
             public boolean test(String s) {
                 if("1".equals(s)){
                     return true;
                 }
                 return false;
             }
         };
         boolean test = predicate.test("2");
         System.out.println("test = " + test);
     }//运行结果
 test = false

Function<T,R>

在这里插入图片描述

可以看出,在抽象方法中既有参数,也有返回值,用于对代码逻辑进行处理。具体示例如下:

   public static void main(String[] args) {
         Function<String, Object> function = new Function<String, Object>() {
             @Override
             public Object apply(String s) {
                 return "传给我的参数是:" + s;
             }
         };
         Object tom = function.apply("Tom");
         System.out.println(tom);
     }//运行结果
 传给我的参数是:Tom

在上面的有参数的三种函数式接口,JDK也提供了给出两个参数的函数如:BiConsumer<T, U>,BiFunction<T, U, R> ,BiPredicate<T, U>
在这里插入图片描述

java8中常用函数式接口Supplier<T>、Consumer<T>、Function<T,R>、Predicate<T>使用示例
BADAO_LIUMANG_QIZHI的博客
01-03 1962
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。下面介绍四个常用的函数式接口使用示例。这四个接口基本满足大部分的使用需求,当然还要其他函数式接口,可根据自己需要查询相关文档。
Java中的函数式编程(二)函数式接口Functional Interface
anyuanwai的博客
10-20 4470
写在前面 前面说过,判断一门语言是否支持函数式编程,一个重要的判断标准就是:它是否将函数看做是“第一等公民(first-class citizens)”。 函数是“第一等公民”,意味着函数和其它数据类型具备同等的地位——可以赋值给某个变量,可以作为另一个函数的参数,也可以作为另一个函数的返回值。 Java 8是通过函数式接口,赋予了函数“第一等公民”的特性。 本文将详细介绍Java 8中的函数式接口。 本文的示例代码可从gitee上获取: https://gitee.com/cnmemset/
Java——函数式接口Supplier接口、Consumer接口、Predicate接口、Function接口
smile4548656的博客
04-26 1227
Java——函数式接口Supplier接口、Consumer接口、Predicate接口、Function接口一、函数式接口概述二、函数式接口作为方法的参数三、函数式接口作为方法的返回值四、常用的函数式接口五、Supplier接口六、Consumer接口七、Predicate接口八、Function接口 一、函数式接口概述 函数式接口:有且仅有一个抽象方法的接口 函数式接口是Lambda表达式的前提 用@FunctionalInterface进行注解 @FunctionalInterface publ
函数式接口 FunctionalInterface
最新发布
2301_78976656的博客
08-25 686
函数式接口是在 Java 8 中引入的概念,用于支持 Lambda 表达式和方法引用。在 Java 中,函数式接口本质就是一个锚点,无论是Lambda 还是 方法引用 都要挂载到这个锚点上才有意义。由于函数式接口可以用 Lambda 表达式或方法引用实现,开发者不需要编写大量的匿名类实现,从而减少样板代码,简化开发。Lambda 表达式往往是一次性使用的,很难像普通方法那样进行复用。在需要复杂或可复用的逻辑时,可能还是需要编写常规方法或类。
java函数式接口-详解(狗头保命)
T-DRAGON
10-18 1035
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为 lambda 表达式。 JDK 1.8 之前已有的函数式接口: java.lang.Runnable java.util.concurrent.Callable java.security.PrivilegedAction java.util.Comparator java.io.FileFilter java.nio.file.PathMatcher java
函数式接口@FunctionInterface
AllenLuoYi的博客
12-13 1253
java8提倡函数式编程,因而新增了一个函数式接口函数式接口保证了函数式编程,同时也保证了能够兼容以前的java版本。 1.1 定义 在java8中,满足下面任意一个条件的接口都是函数式接口: 1、被@FunctionInterface注释的接口,满足@FunctionInterface注释的约束。 2、没有被@FunctionInterface注释的接口,但是满足@FunctionInterface注释的约束 1.2 @FunctionInterface注释的约束 1、接口有且只能有一个抽象方
JDK8函数式接口Functional Interface
就当我是那云朵
10-12 269
Functional 是什么 函数式接口,首先是一个接口,这个接口里面只能有一个抽象方法。 这种类型的接口也称为SAM接口,即Single Abstract Method interfaces 特点 接口有且仅有一个抽象方法 允许定义静态方法 允许定义默认方法 允许java.lang.Object中的public方法 该注解不是必须的,如果一个接口符合"函数式接口"定义, 那么加不加该注解都没有...
JDK1.8函数式接口Function、ConsumerPredicateSupplier
Agger的博客
11-27 932
JDK1.8函数式接口Function、ConsumerPredicateSupplier 1. 函数式接口定义 函数式接口Functional Interface):有且仅有一个抽象方法的接口,但可以有多个非抽象方法的接口 函数式接口,即适用于函数式编程场景的接口,可以被隐式转换为Lambda表达式来表示接口的一个实现;jdk8以前是使用匿名类实现的。 示例:jdk1.8 使用注解@...
Java 8 的 ConsumerSupplierPredicateFunction理解
10-11
其中,四个关键的接口——ConsumerSupplierPredicateFunction,是Lambda表达式的重要组成部分,帮助开发者处理各种操作,尤其是处理集合数据时。下面将详细讲解这四个接口及其在实际开发中的应用。 1. **...
Java学习(函数式接口,性能浪费日志案例,Lambda优化日志案例,函数式接口Supplier,ConsumerPredicateFunction))
XXX_17的博客
02-17 482
2022/2/17 一、函数式接口 package ln.javatest.day17.demo01; /* 函数式接口:有且只有一个抽象方法的接口,称之为函数式接口 函数式接口,即适用于函数式编程的场景的接口,Lambda。 当然接口中可以包含其他的方法(默认,静态,私有) @FunctionalInterface注解 作用:可以检测接口是否是一个函数式接口 是:编译成功 否:编译失败(接口中抽象方法的个数不等于1个 */ @FunctionalInterface public int
FunctionPredicate、 ConsumerSupplier四大函数式接口详解
weixin_43912697的博客
03-04 631
函数式接口:只有一个抽象方法的接口就是函数式接口 只要是函数式接口就可以使用Lambda表达式简化代码 使用函数式接口能简化编程模型 Function 函数型接口Function:有一个输入参数,有一个返回值 举例: public class FunctionTest { public static void main(String[] args) { // Function function = new Function<String,String>() { //
函数式接口妙用
weixin_44507732的博客
03-20 177
函数式接口妙用 细粒度控制 调用方
@FunctionInterface
一个迷恋民谣的丑逼
06-08 3583
1.用在什么地方,有什么要求-用在接口上-接口内除object的public方法外,只有一个抽象方法@FunctionalInterface public interface Java8Interface { static void staticMethod(){//静态方法 System.out.println("staticMethod"); }; de...
函数式接口
囚徒之困
05-03 1067
函数式接口
Java8中Function函数式接口详解及使用
热门推荐
Life is for sharing的博客
08-05 5万+
文章目录1.函数式接口1.1允许定义默认方法1.2允许定义静态方法1.3允许定义java.lang.Object的public方法1.4已有函数式接口2.Function函数2.1Function1.函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口可以被隐式转换为lambda表达式和方法引用(用冒号::来进...
25、四大函数式接口(消费型接口(Consumer)和供给型接口(Supplier))
分享java学习路上的一些笔记,不足之处多多见谅。
11-16 736
第二步:供给型接口(Supplier):没有参数只有返回值(注意是看我们接口的方法没有参数)第一步:消费型接口(Consumer):只有输入参数,返回值(接口的方法是void和参数)
关于函数式接口中常用的Supplier、ConsumerpredicateFunction的总结以及其使用场景
HelloWorld哥的博客
04-08 3848
函数式接口Java中是指:有且仅有一个抽象方法的接口。 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可 以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。 备注:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实 底层的实现原理仍然是迭代器,这便是“语法糖”。从应用层面来讲,Java中的Lambda可以被当做是匿名内部 类的“语法糖”
Java函数式接口(FunctionalInterface)
我的博客
12-03 5256
Java函数式接口 FunctionalInterface
JDK1.8函数式编程:函数式接口的定义、使用及源码解析
资源摘要信息: "JDK1.8【函数式接口】【定义与使用】【源码】" JDK 1.8引入了一个新的编程范式——函数式编程。在函数式编程中,函数式接口扮演了至关重要的角色。函数式接口是一种仅有一个抽象方法的接口,这与...
写文章

热门文章

  • 【sql】MySQL中使用distinct单、多字段去重方法 47059
  • 【git】Idea使用 Undo Commit,Revert Commit,Drop Commit区别 29036
  • 【Java8】stream流groupingBy常见用法。 9845
  • 【sql】MySql 按周/月/日统计数据的方法 7495
  • 【base64】java 通过图片的Base64字符串判断文件格式 6602

分类专栏

  • java位运算符 32篇
  • Java8 18篇
  • 接口 4篇
  • idea 16篇
  • guava
  • 文件
  • 多线程 5篇
  • golang 173篇
  • java力扣算法 381篇
  • 排序 16篇
  • 集合 41篇
  • 30篇
  • 独立集 1篇
  • git 1篇
  • 子串 52篇
  • 指针 15篇
  • 泛型 1篇
  • 前缀和 4篇
  • 链表 21篇
  • 继承 1篇
  • 项目 38篇
  • dfs 15篇
  • 切片 7篇
  • 回溯 6篇
  • 二进制转化 4篇
  • 微服务 23篇
  • 滑动窗口 4篇
  • 动态规划 47篇
  • mybatis
  • maven 2篇
  • 3篇
  • windows 3篇
  • 栈,队列,堆 26篇
  • sql 41篇
  • 正则表达式 7篇
  • 数组拼接 20篇
  • 二分查找 14篇
  • 贪心 11篇
  • 面试 54篇
  • 思考就绪 16篇
  • 异常 2篇
  • 事务 1篇
  • Swagger2 1篇
  • 2篇
  • Rmi 1篇
  • session 1篇
  • base64 1篇
  • 工具类 2篇
  • 枚举 4篇
  • 期末 6篇

最新评论

  • 【git】Idea使用 Undo Commit,Revert Commit,Drop Commit区别

    苍生不问问鬼神: Undo Commit,直接把我写的代码给删掉了

  • 【sql】MySQL中使用distinct单、多字段去重方法

    猪猪_123123123123: group by 这效率恐怕不够高

  • 【Java】使用正则表达式去连续的重复字符问题!!!

    悲催小程序员: 注意只是去除一遍,若是去除后仍有重复的,按需要添加循环处理

  • 【sql】MySQL中使用distinct单、多字段去重方法

    m0_55324400: 讲解非常好

  • 【Java】1049. 最后一块石头的重量 II---使用动态规划,求最靠近数组和sum/2的和!!!

    CSDN-Ada助手: 多亏了你这篇博客, 解决了问题: https://ask.csdn.net/questions/8018992, 请多输出高质量博客, 帮助更多的人

大家在看

  • Synchronized是非公平锁吗?那么如何体现?锁能降级吗?
  • ADM8698ARN ADM8690ARN ADM805LARN ADM803SAKSADM802MARNZ ADM8692ARNZ ADI亚德诺 ADM1232ARMZ ADM690AARM 542
  • HCIP OSPF-1 邻居状态机和 DR 选举
  • 职场福音:微信自动化管理,让你的工作事半功倍
  • 大模型算法岗常见面试题100道(值得收藏)非常详细收藏我这一篇就够了

最新文章

  • 【idea】解决IDEA:The file size exceeds configured limit (5.12MB).
  • 【idea】idea中编译内存不足(java: java.lang.0ut0fMemoryError: Java heap space)的解决方法
  • 【Java|golang】2103. 环和杆---位运算
2024年2篇
2023年96篇
2022年162篇
2021年308篇
2020年59篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惠菁

跪求一键三联

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家五华区玻璃钢雕塑加工厂多少钱玻璃钢装饰雕塑厂家大连哪里有玻璃钢雕塑厂家电话玻璃钢雕塑每平米多少钱玻璃钢卡通雕塑设计价格定西城市玻璃钢雕塑设计北京秋季商场美陈有哪些重庆户外玻璃钢雕塑酒店玻璃钢雕塑艺术摆件新沂玻璃钢造型雕塑英德雕塑玻璃钢雕塑厂家玻璃钢雕塑十二生肖哪家有运城哪里有玻璃钢彩绘雕塑厂家山东秋季商场美陈怎么样文山市玻璃钢雕塑设计供应商贵阳多彩玻璃钢雕塑订做价格天津佛像玻璃钢雕塑销售厂家遛狗雕塑玻璃钢广东玻璃钢人物雕塑定制上海卡通玻璃钢动物狮子雕塑遵义玻璃钢雕塑制作哪家好开业商场美陈采购安徽商场美陈佛像玻璃钢卡通雕塑定制达州玻璃钢造型雕塑工艺玻璃钢人物雕塑供应商衡水卡通人像玻璃钢雕塑绍兴玻璃钢仿铜雕塑厂家榆林人物玻璃钢雕塑安装六安佛像玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化