为什么Java要增加lambda表达式
2013-01-18 09:42
288 查看
本文仅供学习和交流使用,如果您发现我已经侵犯到原作者的版权,请邮件我ttchgm@gmail.com。以便我及时删除和处理。如果翻译有错误或者交流可以随时mail我。或者在sina微博 @天天吃好,私信与我。 本文拒绝任何形式转载。
在
可是 ,为了让客户端代码在这里取得优势,需要一个简单方法给集合函数提供一个函数。当前标准的方式是建立一个
举个例子,在
假设我们想使用
可是,使用Lambda,同样的效果可以用更简介的形式来写:
Lambda表达式,也常常叫做
闭包,是一个在很多现代程序语言中十分流行的特性。在众多不同的原因中当中,Java平台最迫切的原因之一是
lambda表达式能简化多线程上的
集合的分布式处理。
列表和
集是有代表性,在客户端代码获取一个来自
集合的
迭代器,那么使用通过元素的迭代和轮流取出并处理他们。如果在并行中处理不同元素,客户端代码的有责任把它组织起来。
在
Java 8中,目的是替代集合提供的函数,获取函数并使用他们以各种不同的方法处理元素(我们将使用非常简单的函数
forEach为例子,通过它获取一个函数并适用于任何元素)优势是转变集合在内部迭代并组织那些元素,将来自
客户端的并行代码转移到
库代码中。
可是 ,为了让客户端代码在这里取得优势,需要一个简单方法给集合函数提供一个函数。当前标准的方式是建立一个
匿名类实现对应的接口。但定义
内部匿名类的语法太笨拙了
举个例子,在
forEach函数集合上将获取Block接口的一个实例并调用它的apply函数为任何元素。
interface Block<T> { 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));
相关文章推荐
- Lambda FAQ_2.为什么在Java中加入Lambda表达式?
- Java 8为什么需要Lambda表达式
- Java 8为什么需要Lambda表达式
- 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
- 三种批量增加的性能分析 疯狂JAVA
- Java为什么会引入及如何使用Unsafe
- 如何配置来增加eclipse下运行java程序的jvm使用内存
- java springMVC jsp页面时间规范显示、页面无缓存、session读写以及后台增加跳转集锦
- JAVA中重写equals()方法为什么要重写hashcode()方法?
- Android为什么选择了Java、iOS为什么选择了Object-C?
- 为什么开发者对Java 9如此的兴奋
- 技术短文:为什么要学Java?[Jonathan Knudsen]
- Java中增加了@Override方法报错
- java实体类为什么要实现序列化
- 为什么开发者对Java 9如此的兴奋
- Java面试基础篇——第二篇:String类能为什么不能被继承?
- java类中为什么设置set和get方法
- 在java中String类为什么要设计成final?
- 【Java基础之重写equals、hashCode和compareTo方法】什么时候需要重写重写equals方法?为什么重写equals方法,一定要重写HashCode方法?
- Java中是否可以继承String类,为什么