`
Ivan_Pig
  • 浏览: 381982 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

[FAQ]为什么引入lambda表达式

阅读更多

Lambda表达式(闭包)在很多现代化的编程语言中很常见。在Java平台上引入lambda表达式的一个最主要原因是方便多线程的处理集合。目前,对于listset等集合类典型的操作方式是使用迭代器。如果需要并行的处理集合,需要编写客户端代码来处理,而不是集合本身处理。


Java8中,引入闭包的目的就是为了给集合提供函数式的方法,方便处理。这样所带来的好处是,集合能够自己组织他们的元素,而不需要客户端代码来处理。但是,为了使得客户端代码能够使用这一改进,必须给集合添加函数式方法。当前通用的做法是使用匿名类。但是声明匿名类带来了过多的标准化代码。


举例来说,forEach方法接受一个Consumer接口的实例并为每个元素调用它的accept方法:

interface Consumer<T> { void accept(T t); }


假设我们要使用forEach调换java.awt.Point的集合的每个元素的xy的坐标。使用Consumer的匿名内部类,我们需要编写类似如下的代码

pointList.forEach(new Consumer() {
public void accept(Point p) {
p.move(p.y, p.x);

});


而如果使用lambda表达式,我们只需要这样:

pointList.forEach(p -> p.move(p.y, p.x));

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics