函数式接口
1|0函数式接口
- 函数式接口:有且仅有一个抽象方法的接口
- 函数式接口适用于Lambda表达式
- 只有确保接口中有且仅有一个抽象方法,Lambda才能顺利推导
定义一个函数式接口
测试类
运行结果
注意
- 满足函数式接口的情况下,@FunctionalInterface 可写可不写,建议写上
- 标注@FunctionalInterface的情况下,如果是函数式接口,编译通过;如果不是函数式接口,编译不通过
2|0函数式接口作为方法的参数
需求:定义一个类RunnableDemo,在里面提供两个方法
一个方法是startThread(Runnable r),方法参数Runnable是一个函数式接口
在住方法中调用startThread方法
运行结果
注意
- 如果方法的参数是一个函数式接口,可以使用Lambda表达式作为参数传递
3|0函数式接口作为方法的返回值
需求:定义一个类ComparatorDemo,在里面提供两个方法
一个方法是Comparator< String> getComparator, 方法返回值Comparator是一个函数式接口
在住方法中调用getComparator方法
运行结果
注意
- 如果方法的返回值是一个函数式接口,可以使用Lambda表达式作为结果返回
4|0常用函数式接口
Java8在Java.util.function包下提供了大量函数式接口
- Supplier
- Consumer
- Predicate
- Function
4|1Supplier接口
Supplier < T >:包含一个无参的方法
- T get():获得结果
- 该方法不需要参数,他会按照某种实现逻辑(Lambda表达式)返回一个数据
- Supplier < T >被称为生产型接口,如果我们指定了接口的泛型,那么get()就会生产什么样的数据
案例1:
运行结果:
案例2:
需求:定义一个类SupplierTest,里面有一个int getMax(Supplier< Integer> sup)用于返回int数组中的最大值
运行结果:
4|2Consumer接口
Consumer< T>:包含两个方法
- void accept(T t):对给定的参数执行此操作
- default Consumer< T> andThen(Consumer after):返回一个组合的Consumer,依次执行此操作,然后执行afer操作
- Consumer< T>接口也被称为消费型接口,消费的数据的类型由泛型决定
案例:
运行结果:
练习:
- String[] strArray = {"李信,30","苏烈,32","白起,40"};
- 字符串数组有多条信息,请按照格式:“姓名:XX,年龄:XX”的格式将信息打印出来
- 要求:
-- 把打印姓名的动作作为第一个Consumer接口的Lambda实例
-- 把打印年龄的动作作为第二个Consumer接口的Lambda实例
-- 将两个Consumer接口按照顺序组合到一起使用
运行结果:
4|3Predicate接口
运行结果:
注意:加上negate()就是否定判断,结果相反
练习:
- String[] strArray = {"刘亦菲,30","刘萱,34","李冰冰,35","大乔,31","孙尚香,33"};
- 字符串数组有多条信息,请通过Predicate接口的拼装,将符合要求的字符串筛选到集合ArraryList集合中,并遍历
- 同时满足如下要求:姓名长度大于2,年龄大于33
- 分析:有两个判断条件,需要使用两个Predicate接口,对条件进行判断;必须同时满足两个条件,可以使用and方法连接两个判断条件
运行结果:
4|4Function接口
运行结果:
练习:按照指定要求操作数据
- String s = "刘亦菲,30";
- 请通过Function接口实现函数拼接
- 请按照指定的要求进行操作
- 1.截取字符串,得到年龄
- 2.将截取到的年龄字符串,转为int类型的数据
- 3.将转化后的int类型的数据,加70,得到新的int类型的数据,并输出
运行结果:
__EOF__

本文作者:茶碗儿
本文链接:https://www.cnblogs.com/chawaner/p/17084682.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/chawaner/p/17084682.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2021-02-02 微信二维码支付