- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
论函数式编程在JAVA程序中的应用
论函数式编程在JAVA程序中的应用
摘要:函数式编程已经成为当前最流行的编程模式之一,根据JAVA8最新标准,介绍了lambda表达式对函数式编程的支持,并探讨了Stream类在应用开发中的使用方式,对lambda表达式的应用模式进行了探讨。
中国论文网 /8/view-7163688.htm
关键词:函数式;Java程序;应用
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)06-0099-02
函数式编程(functional programming)作为当前最流行的编程规范之一,主流语言都对其进行了支持,作为编程领域最重要的JAVA语言,也在最新的JDK8中新增了相关特性,这就是lambda(λ)表达式及Stream类。它使得JAVA语言进一步与当今流行趋势结合,增强了JAVA语言的表现力,拓展了它的应用范围,优化了程序的结构与可读性
1 函数式编程简介
函数式编程(functional programming)是一种编程模式,旨在将运算过程尽量写成一系列嵌套的函数调用。在形式上,函数式编程允许将函数作为参数和返回值;在机制上,函数式编程在执行时进行惰性计算(lazy evaluation)和闭包等技术。最主要的优点是不修改状态,可以将任务随意分解,很好的符合了当前多线程、多处理器编程的趋势。
2 JAVA中的lambda表达式
lambda(λ)表达式是JDK8最大的更新之一,旨在引入函数式编程思想优化JAVA程序。其表达形式如下:
(int even, int odd) - even + odd
在JDK8 中,使用-符号引起表达式,该符号左边为表达式的参数,右边为表达式的行为。Lambda表达式可使用在多种场合,例如作为参数直接传入某个函数:
button.addActionListemer(event-System.out.println(“button clicked!!”));
其中button是一个AWT Button 对象,由此我们可以看出,在传统的需要匿名内部类的地方可由lambda表达式代替,另外,传统的函数参数需要一个对象,而引入了lambda表达式之后,则可以将函数作为参数传入,从而在代码上更加简洁。
引入lambda表达式的优点首先体现着对代码的重构上,传统的JAVA程序有一个重要的概念即匿名内部类,这个类在某些只使用一次即销毁的情况下创建,例如常见的为按钮添加事件
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println(”button clicked”);}
});
但是该代码当中有若干行是纯粹的样板代码,没有任何实际意义,不仅语法冗长,而且破坏了代码的真实意图,而采用lambda表达式改写后,该段代码的目的一目了然,如下所示
button.addActionListener(event-System.out.println(”buttonclicked”);
其次,lambda表达式配合jdk8新增的的Stream类可以提高程序――特别是循环结构――的执行效率,在JDK8之前,传统的循环结构采用的都是外循环结构,例如试图取得所有来自北京的教师
int count = 0;
for (Teacher teacher : allTeachers) {
if (teacher.isFrom(”London”)) {
count++;}
}
可以看到,传统方式中,集合内部的数据与外部的循环语句不停的进行交换,外部程序不得不占用一部分空间为结果集做准备,从时间上到空间上都造成了浪费。而经过lambda表达式和Stream改造,原有的外部循环成为内部循环,如下例所示:
long count = allArtists.stream().filter(artist - artist.isFrom(”London”)).count();
可以看出,使用lambda表达式后,内部循环只是在符合条件的集合个体中做出标识,不占用额外内存,当程序不发出最后的指令(如要求立即返回结果)时,内部循环不作出任何操作,称为lazy模式,这样就节省了时间。
3 用lambda表达式优化程序
初学者在使用lambda表达式时,可将其应用在集合操作中,优化其操作方式,lambda表达式与Stream类所支持的集合优化有map、filter、flatma
您可能关注的文档
最近下载
- 《仪器分析—分光光度计》学科知识考试题库(附答案).docx VIP
- 年产770吨精细化学品改扩建项目(达得利公司)环境影响报告.pdf
- JCT 899-2016 混凝土路缘石.docx VIP
- JB T 3695-2008 电动葫芦桥式起重机 标准.pdf VIP
- 桥梁桩基施工专项方案(新编制) .pdf VIP
- 马拉松赛事赛事组织管理与赛事赛事经济效益评价报告.docx
- (GBT7588 1—2020)电梯制造与安装安全规范.pdf VIP
- 电子焊接培训课件.ppt
- 纪念中国人民抗日战争暨世界反法西斯战争胜利80周年主题党课PPT(优质ppt).pptx VIP
- 管幕顶进施工方法及装置.pdf VIP
文档评论(0)