java 接口 this参数_Java BiFunction 接口实例

原标题:Java BiFunction 接口实例

www.baeldung.com/java-bifunction-interface

1. 简介

Java8 引入了函数式编程,可以把函数作为参数传入实现通用方法。熟知的 Java 8 单个参数函数式接口比如 Function、Predicate 和 Consumer。

这篇教程会介绍如何使用支持两个参数的函数式接口。这样的函数被称为二元函数,在 Java 中使用 BiFunction 函数式接口。

2. 单个参数函数

让我们快速回顾一下如何使用单个参数函数或者一元函数,就像在Stream教程中实现的示例:

List mapped = Stream.of( "hello", "world")

. map(word -> word + "!")

.collect(Collectors.toList);

assertThat(mapped).containsExactly( "hello!", "world!");

上面的单元测试中,map 方法接受1个 Function 类型作为参数,对给定的的输入操作后返回结果。

3. 双参操作

Java Stream 库提供了 reduce 函数,可以组合 Stream 中的元素。在这里定义已接收的数据如何与下一个操作转换。

reduce 接受 BinaryOperator 类型作为参数,支持输入两个类型相同的对象。

假设要求把 Stream 中的数据通过破折号连接起来,下面是几种实现方案。

3.1. 使用 Lambda 表达式

用 Lambda 实现BiFunction,前面是由括号包围的两个参数:

String result = Stream.of( "hello", "world")

.reduce( "", (a, b) -> b + "-"+ a);

assertThat(result).isEqualTo( "world-hello-");

上面的示例中,a、b 两个值是字符串类型。Lambda 实现把两个参数按照要求组合,b 在前,a 在后,中间是破折号。

可以看到 reduce 的第一个参数是空字符串,Stream 中的第一个值会与空字符串连接。

另外可以注意到,Ja

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值