lambdaExpressions..docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lambdaExpressions.

简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个语法糖,由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.)Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function包以及java.util.stream包。流(stream)就如同迭代器(iterator),但附加了许多额外的功能。总的来说,lambda表达式和 stream 是自Java语言添加泛型(Generics)和注解(annotation)以来最大的变化。在本文中,我们将从简单到复杂的示例中见认识lambda表达式和stream的强悍。环境准备如果还没有安装Java 8,那么你应该先安装才能使用lambda和stream(译者建议在虚拟机中安装,测试使用)。像NetBeans和IntelliJ IDEA 一类的工具和IDE就支持Java 8特性,包括lambda表达式,可重复的注解,紧凑的概要文件和其他特性。Lambda表达式的语法基本语法:(parameters) - expression或(parameters) -{ statements; }下面是Java lambda表达式的简单例子://?1.?不需要参数,返回值为?5 ??()?-?5????//?2.?接收一个参数(数字类型),返回其2倍的值 ??x?-?2?*?x????//?3.?接受2个参数(数字),并返回他们的差值 ??(x,?y)?-?x?–?y????//?4.?接收2个int型整数,返回他们的和 ??(int?x,?int?y)?-?x?+?y????//?5.?接受一个?string?对象,并在控制台打印,不返回任何值(看起来像是返回void) ??(String?s)?-?System.out.print(s)??// 1. 不需要参数,返回值为 5() - 5// 2. 接收一个参数(数字类型),返回其2倍的值x - 2 * x// 3. 接受2个参数(数字),并返回他们的差值(x, y) - x – y// 4. 接收2个int型整数,返回他们的和(int x, int y) - x + y// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)(String s) - System.out.print(s)基本的Lambda例子现在,我们已经知道什么是lambda表达式,让我们先从一些基本的例子开始。在本节中,我们将看到lambda表达式如何影响我们编码的方式。假设有一个玩家List ,程序员可以使用 for 语句 (for 循环)来遍历,在Java SE 8中可以转换为另一种形式:String[]?atp?=?{Rafael?Nadal,?Novak?Djokovic,?????????Stanislas?Wawrinka,?????????David?Ferrer,Roger?Federer,?????????Andy?Murray,Tomas?Berdych,?????????Juan?Martin?Del?Potro};??ListString?players?=??Arrays.asList(atp);????//?以前的循环方式 ??for?(String?player?:?players)?{???????System.out.print(player?+?;?);??}????//?使用?lambda?表达式以及函数操作(functional?operation) ??players.forEach((player)?-?System.out.print(player?+?;?));?????//?在?Java?8?中使用双冒号操作符(double?colon?operator) ??players.forEach(System.out::println);??String[] atp = {Rafael Nadal, Novak Djokovic, Stanislas Wawrinka, David Ferrer,Roger Federer, Andy Murray,Tomas Berdych, Juan Martin Del P

文档评论(0)

bhzs + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档