Java8之Function、BiFunction使用
- BiFunction<T,U,R> 接收 2个参数 ,返回一个结果
public class DemoFunction { public static void main(String[] args) { DemoFunction t1 = new DemoFunction(); // Function函数的使用 Integer addResult = t1.compute(3, value -> value + value); System.out.println("加法结果:" + addResult); //3+3 Integer subResult = t1.compute(3, value -> value - 1); System.out.println("减法结果:" + subResult); //3-1 Integer multipResult = t1.compute(3, value -> value * value); System.out.println("乘法结果:" + multipResult); //3*3 Integer divisionResult = t1.compute(6, value -> value / 3); System.out.println("除法结果:" + divisionResult); //6/3 // 使用compose场景, 从右向左处理, 这里就是 (6 * 6) + 10 = 46 Integer composeResult = t1.computeForCompose(6, value -> value + 10, value -> value * value); System.out.println("Function compose 结果:" + composeResult); // 使用andThen场景, 从左向右处理, 这里就是(3 + 20) - 10 = 13 Integer andThenResult = t1.computeForAndThen(3, value -> value + 20, value -> value - 10); System.out.println("Function andThen 结果:" + andThenResult); // 使用 BiFunctioin场景, 这里是 2 + 3 = 5 Integer biFuncResult = t1.computeForBiFunction(2, 3, (v1, v2) -> v1 + v2); System.out.println("BiFunction 结果:" + biFuncResult); // 使用 BiFunctioin andThen场景, 这里是 (2 * 3) + 6 = 12 Integer biFuncAndThenResult = t1.computeForBiFunctionAndThen(2, 3, (v1, v2) -> v1 * v2, v1 -> v1 + 6); System.out.println("BiFunction andThen 结果:" + biFuncAndThenResult); } /** * 使用JDK8 Function函数 * * @param num 入参 * @param function 函数 * @return Integer */ private Integer compute(Integer num, Function<Integer, Integer> function) { return function.apply(num); } /** * 使用compose函数,简单的说,就是从右向左处理。 * * @param num 变量 * @param function1 函数1 * @param function2 函数2 * @return Integer */ private Integer computeForCompose(Integer num, Function<Integer, Integer> function1, Function<Integer, Integer> function2) { return function1.compose(function2).apply(num); } /** * 使用andThen函数,简单的说,就是从左向右处理。 * * @param num 变量 * @param function1 函数1 * @param function2 函数2 * @return Integer */ private Integer computeForAndThen(Integer num, Function<Integer, Integer> function1, Function<Integer, Integer> function2) { return function1.andThen(function2).apply(num); } /** * 使用BiFunction * * @param num1 变量1 * @param num2 变量2 * @param biFunction 函数 * @return Integer */ private Integer computeForBiFunction(Integer num1, Integer num2, BiFunction<Integer, Integer, Integer> biFunction) { return biFunction.apply(num1, num2); } /** * 使用BiFunction andThen方法 */ private Integer computeForBiFunctionAndThen(Integer num1, Integer num2, BiFunction<Integer, Integer, Integer> biFunction, Function<Integer, Integer> function) { return biFunction.andThen(function).apply(num1, num2); } }
输出结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix