- 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 8或许是 迄今为止最令人期待的Java版本,最初定于今年的9月份发布,但由于一系列的安全漏洞问题,目前已推迟到明年的3月份。
Java 8试图“创新”,根据 微软对这个词的定义,就是把其他框架或语言里成熟的特性“偷”进来。在新版本发布之前,Java社区就已经开始讨论Lambda项目、Streams、函数式接口等其他好东西。下面就让我们一起来看下这些伟大的功能,看看它们各自的优缺点,好让你更好地应用在项目中。
Streams
集合(Collections)的改进也是Java 8的一大亮点,而让集合越来越好的核心组件则是“Stream”。它与java.io包里的InputStream和OutputStream是完全不同的概念,它是一个全新的概念,大家不要混淆。
此外,Stream的出现也并不是要取代ArrayLists或其他集合,它提供了一种操作大数据接口,让数据操作更容易和更快。Stream是 一次性使用对象,一旦被遍历,就无法再次遍历。在遍历时,它具有过滤、映射以及减少遍历数等功能。每个Stream都有两种模式:顺序执行和并行执行,其 能够利用多核处理器的优势,并可以使用 fork/join并行方式来拆分任务和加速处理过程。
顺序流:
List?Person?people?=?list.getStream.collect(Collectors.toList());?
并行流:
List?Person?people?=?list.getStream.parallel().collect(Collectors.toList());?
顾名思义,当使用顺序方式去遍历时,每个item读完后再读下一个item。而使用并行去遍历时,数组会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。
并行流实例:
List?originalList?=?someData;?
split1?=?originalList(0,?mid);?
split2?=?originalList(mid,end);?
new?Runnable(cess());?
new?Runnable(cess());?
List?revisedList?=?split1?+?split2;?
由于一个Stream只能被遍历一次,通常会返回另外一个Stream,可以使用终端方法(terminal method)来获取有用的结果,终端方法可以是sum()、collect()或toArray()等。在Stream被终止之前,操作的结果不会被实现。
Double?result?=?list.getStream().mapToDouble(f?-?f.getAmount()).sum();???
ListPerson?people?=?list.getStream().filter(f?-?f.getAge()??21).collect(Collectors.toList());???
该功能最大的好处是允许使用多核处理器来处理集合,这样处理速度会更加快速。而最主要的问题则是可读性。随着流链的加长,很有可能影响可读性。其它问题则来源于内置的新东西来支持这个新路径,这些是功能接口和Lambda。
函数式接口
在Java 8里将会有一个全新的功能——函数式接口(functional interfaces),就是可以在接口里面添加默认方法,并且这些方法可以直接从接口中运行。
这样就可以在接口中实现集合的向后兼容,并且无需改变实现这个方法的类,就可以让Stream放置到接口中。一般而言,在接口中创建一个默认方法,然后实现该接口的所有类都可以使用Stream(无论是默认方法还是非默认方法)。
基本上就是一种多继承形式,这样就变成了实现者之间的问题,作为实现人员,必须重写这些方法,他们可以选择使用超方法(supermethod),这也就意味着,许多实现接口的类需要改写。
这有可能是Java 8里最让人关心的细节,也许Java 8里的函数式接口对于熟悉Scala的开发者来说不算新功能,但是他们可能会拿函数式接口与Scala的特征进行比较。然而,两者之间不同的是:Java 8里的函数式接口不能将一个引用指向实现类,而Scala允许通过self关键字来实现该操作。会有一些语言狂热者说,Java 8里的函数式接口只允许多继承行为,而不是状态。而Scala里的多继承特征既可以是行为也可以是状态。
在Java里实现事务和其它项目,我们一般会使用 JavaAssist或 cglib的扩展类来构建动态代理和字节码操作。而Scala的特行可以让我们更直接地实现。
一方面,函数式接口可能会被以继承方式滥用,另一方面,它们尽量不与Scala特征重复。
Lambda
Java 8的另一大亮点是
您可能关注的文档
- 2014综合业务系统知识培训.doc
- 2014维新物业管理系统方案.doc
- 2014综合业务系统数据移植说明.doc
- 2014绵阳电气工业职业培训学校简介.doc
- 2014综合写字楼管理方案.doc
- 2014综合办公室作业指导书培训.doc
- 2014综合实训二类调查报告.doc
- 2014综合代维信息化支撑手段.doc
- 2014综合大检查检查表.doc
- 2014综合实践垃圾分类学问大教案.doc
- 2025年南昌辅警招聘考试题库含答案.docx
- 2025年陕县财政局下属事业单位招聘笔试模拟试题附答案.docx
- 2025陕西秦巴碧水环境检测有限公司招聘(10人)笔试备考试题附答案.docx
- 2025年镇巴县纪委监委下属事业单位招聘笔试模拟试题附答案.docx
- 2025广西铝业集团有限公司社会招聘1人笔试参考题库附答案.docx
- 2025年隆昌县财政局下属事业单位招聘笔试模拟试题附答案.docx
- 贵州国企招聘:2025德江县县属国有企业招聘37人笔试参考题库附答案.docx
- 保密员考试题库【培优b卷】.docx
- 在县委(区委)党校2025年秋季主体培训班开班式上的专题党课.docx
- 2026年高级保密员模拟试题含完整答案(网校专用).docx
原创力文档


文档评论(0)