在线报名 | 加入收藏 | 学校地图

电话:400-0379-707 QQ:710034203

首页 > 学习园地 > Java学习 > 正文阅读

洛阳北大青鸟:为什么Java要增加lambda表达式

发布时间:2013-04-15 14:05:21 点击:0
洛阳北大青鸟导读:Lambda表达式,也常常叫做闭包,是一个在很多现代程序语言中十分流行的特性。在众多不同的原因中当中,Java平台最迫切的原因之一是lambda表达式能简化多线程上的集合的分布式处理。列表和集是有代表性,在客户端...

 

Lambda表达式,也常常叫做闭包,是一个在很多现代程序语言中十分流行的特性。在众多不同的原因中当中,Java平台最迫切的原因之一是lambda表达式能简化多线程上的集合的分布式处理。列表和集是有代表性,在客户端代码获取一个来自集合的迭代器,那么使用通过元素的迭代和轮流取出并处理他们。如果在并行中处理不同元素,客户端代码的有责任把它组织起来。

在Java 8中,目的是替代集合提供的函数,获取函数并使用他们以各种不同的方法处理元素(我们将使用非常简单的函数forEach为例子,通过它获取一个函数并适用于任何元素)优势是转变集合在内部迭代并组织那些元素,将来自客户端的并行代码转移到库代码中。

可是,为了让客户端代码在这里取得优势,需要一个简单方法给集合函数提供一个函数。当前标准的方式是建立一个匿名类实现对应的接口。但定义内部匿名类的语法太笨拙了

举个例子,在forEach函数集合上将获取Block接口的一个实例并调用它的apply函数为任何元素。

interface Block { void apply(T t); }

假设我们想使用forEach在List中的Point元素(Java.awt.Point)上调换x和y的坐标。使用内部匿名类实现Block我们通过调换函数,像这样:

pointList.forEach(new Block() {

public void apply(Point p) {

p.move(p.y, p.x);

}

});

可是,使用Lambda,同样的效果可以用更简介的形式来写:

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

热词搜索: 洛阳北大青鸟 JAVA
分享该网页到:   转播到腾讯微博  分享到QQ空间
  • ①理论课
  • ②上机课
  • ③职业导向训练(COT)
  • ④指导学习课(DLC)
  • ⑤项目案例课
  • ⑥在线培训课(OLTL)
  • ⑦阶段项目课
  • ⑧毕业设计课
人才招聘 | 视频专区 | 专题活动 | 认证查询 | 网站地图