运维开发网

使用Lambda的函数式编程

运维开发网 https://www.qedev.com 2021-04-24 10:52 出处:51CTO 作者:mob604756f828bf
使用Lambda的函数式编程 过去,大多数开发人员发现他们需要一个集合来完成一个或几个操作: 创建一个新的集合对象,但过滤掉那些不合格的元素。 将集合中的元素逐个转换,并使用转换后的集合。

使用Lambda的函数式编程

过去,大多数开发人员发现他们需要一个集合来完成一个或几个操作:

创建一个新的集合对象,但过滤掉那些不合格的元素。

将集合中的元素逐个转换,并使用转换后的集合。

为集合中所有元素的某一属性创建总的值,例如,使用平均值求和。这类任务(分别称为过滤、映射和化简)有共同的要点:它们都需要处理集合中的每个元素。

不管是确定一个元素是否存在,还是确定一个元素是否满足某个条件(过滤),还是将一个元素转换为新的元素并产生新的集合(映射),还是计算一个整体值(化简),程序的主要原则都是“程序必须处理集合中的每一个元素”。

也就是说,我们需要一个简单的方法来表示一个程序,用于内部遍历。所幸的是,JavaSE8为这种符号提供了构造语句块。

支持基本函数式编程的JavaSE8类

JavaSE8中的一些类意在被用于实现前述的函数式典范,这些类包括Predicate,Mapper和Block–当然,还有其它的一些类–它们都在一个新的java.util.functions包中。

看看Predicate类的更多细节,该类常被用于实现过滤算法;将它作用于一个集合,以返回一个包含有符合谓语条件元素的新集合。何为谓语,有很多种解释。JavaSE8认为谓语是一个依据其变量的值来判定真或假的方法。

想想我们以前看过的另一个例子。给出一组字符串,我们想要判断它是否包含指定的字符串,但是想要字符串的比较对大小写不敏感。

我们将需要在JavaSE7中使用外部遍历。

使用Lambda的函数式编程

1

对于即将发布的JavaSE8,我们使用Predicate和Collections类中的一个新的helper方法(过滤器)来编写更加简洁的程序。

使用Lambda的函数式编程

实际上,如果使用更一般的函数式编程方式的话,你只需要写一行代码。

使用Lambda的函数式编程

您可以看到,代码仍然是非常易读的,而且我们已经了解到使用内部遍历的好处。

0

精彩评论

暂无评论...
验证码 换一张
取 消