常用函数式接口-Function
java.util.function.Function<T,R> 接口用来根据一个类型的数据得到另一个类型的数据,前者称为前置条件,后者称为后置条件。
@FunctionalInterface
public interface Function<T, R> {R apply(T t);default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {Objects.requireNonNull(before);return (V v) -> apply(before.apply(v));}default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {Objects.requireNonNull(after);return (T t) -> after.apply(apply(t));}static <T> Function<T, T> identity() {return t -> t;}
}
抽象方法:apply
Function 接口中最主要的抽象方法为: R apply(T t) ,根据类型T的参数获取类型R的结果。 使用的场景例如:将 String 类型转换为 Integer 类型。
public class Demo {private static void method(Function<String, Integer> function) {int num = function.apply("10");System.out.println(num + 20);}public static void main(String[] args) {method(s -> Integer.parseInt(s));}
}
当然,最好是通过方法引用的写法。
默认方法:andThen
Function 接口中有一个默认的 andThen 方法,用来进行组合操作。
该方法同样用于“先做什么,再做什么”的场景,和 Consumer 中的 andThen 差不多:
public class Demo {private static void method(Function<String, Integer> one,Function<Integer, Integer> two) {int num = one.andThen(two).apply("10");System.out.println(num + 20);}public static void main(String[] args) {method(str -> Integer.parseInt(str) + 10, i -> i *= 10);}
}
第一个操作是将字符串解析成为int数字,第二个操作是乘以10。两个操作通过 andThen 按照前后顺序组合到了一 起。
请注意,Function的前置条件泛型和后置条件泛型可以相同。
自定义函数模型拼接
请使用 Function 进行函数模型的拼接,按照顺序需要执行的多个函数操作为:
- String str = "张二三,20"
- 将字符串截取数字年龄部分,得到字符串;
- 将上一步的字符串转换成为int类型的数字;
- 将上一步的int数字累加10,得到结果int数字。
public class Demo {public static void main(String[] args) {String str = "张二三,20";int age = getAgeNum(str, s -> s.split(",")[1],s -> Integer.parseInt(s),n -> n += 100);System.out.println(age);}private static int getAgeNum(String str, Function<String, String> one,Function<String, Integer> two,Function<Integer, Integer> three) {return one.andThen(two).andThen(three).apply(str);}
}
有帮到你的点赞、收藏一下吧
需要更多教程,微信扫码即可
常用函数式接口-Function相关推荐
- 常用函数式接口,Stream流
01.第一章:常用函数式接口_Predicate判断接口: 1).java.util.Function.Prdedicate(函数式接口): 2).抽象方法:1).boolean test(T t) ...
- 常用函数式接口:Consumer、Predicate、Function的方法说明解练习
目录 一.常用函数式接口:Consumer 二.Consumer接口练习:按要求打印信息 三. 常用函数式接口:Predicate 四.Predicate接口练习:筛选满足条件数据 五.常用函数式接口 ...
- 【java笔记】常用函数式接口(4):Funtion接口
[java笔记]常用函数式接口(1):Supplier接口_m0_52043808的博客-CSDN博客 [java笔记]常用接口(2):Consumer接口_m0_5204 ...
- 常用函数式接口及Stream流
1.常用函数式接口 1.1Supplier接口 功能 生产型接口,接口的泛型指定成什么类型,就生产什么类型的数据(提供函数式接口,方便使用Lambda进行简化代码) 抽象方法 T ge ...
- java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function
文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...
- Java8之函数式接口及常用函数式接口
目录 函数式接口 1.概念 2.@FunctionalInterface 3.函数式接口使用方式 常用函数式接口 1.JDK提供的函数式接口举栗 2.Supplier 3.Consumer 4.Pre ...
- 【java笔记】常用函数式接口(1):Supplier接口
[java笔记]常用接口(2):Consumer接口_m0_52043808的博客-CSDN博客 [java笔记]常用函数式接口(3):Predicate接口_m0_52043808的博客-CSDN博 ...
- Java8新特性概览——Stream特性,Lambda表达式,函数式接口Function、Predicate、Consumer,方法引用等概述
概述: Java 8 新特性概述:https://www.ibm.com/developerworks/cn/java/j-lo-jdk8newfeature/index.html JAVA8 十大新 ...
- 常用函数式接口_Predicate
函数式接口Predicate 软件包 java.util.function Interface Predicate<T> Predicate 接口用来判断传递的参数是否满足条件,并返回一个 ...
最新文章
- 【数据结构与算法】之深入解析“股票价格跨度”的求解思路与算法示例
- Hulu:如何实现大型比赛直播系统自动扩容
- bigdecimal如何做除法_公务员行测朴素逻辑解题技巧—代入排除法
- Apache Sqoop性能调整
- PHP Opcache(ZendOptimizerPlus)的安装配置详解
- TransE模型的简单介绍TransE模型的python代码实现
- 汽车智能电气技术分析
- 服务器安装找不到lsi驱动,IBM 服务器 SAS Raid LSI Windows2008 硬盘 驱动
- 漫谈程序员系列:别说“我已经很努力了”
- windows 下搭建邮件服务器
- UML中各图形或图标表示的意思
- 百度大字版APP支持语音搜索,老年人也能玩转互联网
- [渝粤教育] 浙江师范大学 敦煌文学艺术 参考 资料
- Https证书制作方法
- 那些Chrome不为人知的高效隐藏技巧,让你的浏览器好用10倍!
- latex 加载IEEE模板无法加载pdf图片问题
- MATLAB学习——数据类型(结构体、数组、单元数组、map容器类型)
- 已被清理的视频怎么恢复?微信过期视频怎么恢复
- 企业员工入职培训怎么做?培训内容分享
- 以“老师”命名的 Julia 语言,结合了 Python、R、C的优点,到底有多厉害!
热门文章
- 本想制衡经销商价格,不料成为黄牛货源地!茅台电商公司被迫解散!
- 14岁女孩模仿视频中易拉罐做爆米花意外身亡 博主办公室小野回应...
- 世界机器人大赛总决赛现场快报:多为中小学生
- 中国联通辟谣“不支持华为”:恶意诽谤 将通过法律手段维护权益
- 全互联+杜比影音ThinkPad X1 Carbon 2019全新上市
- 韩国造智能手机时代走向终结:昔日巨头纷纷关闭生产线或削减产量
- 苹果进行iPhone问世后最重大转型:硬件时代转互联网服务
- 呼叫前转业务在VoIP系统中的实现
- 你真明白 Python 装饰器么?
- mysql启动提示 access denied for user root@localhost(using password:YES) 解决办法总结