- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lambda和steam经典总结
λ表达式本质上是一个匿名方法,它可以自动实现接口中的唯一方法,这个接口一般用@FunctionalInterface标注出来(也可以不标),java8引入lambda表达式和stream可以实现函数式编程。实现函数式接口的例子有Runnable,Callable,Comparable,java8中新加入了Function,Predicate,Consumer,Supplier。函数式编程的核心声明式的代码风格(Declarative Style) :?这需要提高代码的抽象层次,比如在前面的例子中,将从集合中搜索一个元素的操作封装到contains方法中。更多的不变性(Promote Immutability) : 能不声明变量就不要声明,需要变量时尽量使用final来修饰。因为变量越多,就意味着程序越难以并行。实现了不变性的方法意味着它不再有副作用,不会因为调用而改变程序的状态。使用表达式来代替语句(Prefer Expression to Statement) : 使用语句也就意味着不变性的破坏和程序状态的改变,比如赋值语句的使用。使用高阶函数(High-Order Function) : 在Java 8以前,重用是建立在对象和类型系统之上。而Java 8中则将重用的概念更进一步,使用函数也能够实现代码的重用。所谓高阶函数,不要被其名字唬住了,实际上很简单:将函数作为参数传入到另外一个函数中函数的返回值可以是函数类型在函数中创建另一个函数函数式编程例子1:prices.stream().filter(price - pareTo(BigDecimal.valueOf(20))0).map(price - price.multiply(BigDecimal.valueOf(0.9))).reduce(BigDecimal.ZERO, BigDecimal::add);一、lambda表达式1.自定义函数式接口(也可以直接使用java8自带函数式接口)@FunctionalInterfacepublic interface?LambdaInterface {int?add(int?i, int?j);}2、将函数式接口作为参数的方法和类public class?LambdaUse{private?Integer?age;private?String?name;public?String?getName() {return?name;}public void?setName(String name) {?= name;}public?Integer?getAge() {return?age;}public void?setAge(Integer age) {this.age?= age;}public?LambdaUse(int?age,?String name) {this.age?= age;?= name;}public?LambdaUse() {}public int?getAdd(LambdaInterface lambdaInterface) {return?lambdaInterface.add(5,?6);}}3.测试public class?TestClass {@Testpublic void?lambdaTest() {LambdaUse lambdaUse =?new?LambdaUse();System.out.println(lambdaUse.getAdd((i,?j) - {return?i + j;}));}@Testpublic void?foreachTest() {String[] atp = {Rafael Nadal,?Novak Djokovic,Stanislas Wawrinka,David Ferrer,Roger Federer,Andy Murray,Tomas Berdych,Juan Martin Del Potro};List a = Arrays.asList(atp);a.forEach(pp - System.out.println(pp));}@Testpublic void?sortTest() {// Collections.sort(a, Cparing(pp-pp));// a.sort(Cparing(pp-pp));// List b = a.stream().sorted((p1,p2) - pareTo(p1)).collect(Collectors.toList());// b.forEach(pp-{System.out.println(pp);});List b =?new?ArrayList();b.add(new?LambdaUse(1
您可能关注的文档
- 2017四川高考文综.doc
- 2017年东城二模生物.doc
- 2017年《中级财务管理》高频考点(四).docx
- 2017年带式输送机技能鉴定题判断题.docx
- 2017年华工营销学原理随堂练习.docx
- 2017年春季体育活动议程及讲话分工.doc
- 2017年科室重点指标考核指标.docx
- 2017年高考适应性练习二.doc
- 2017暑期二升三数学.doc
- 2017注册会计师税法1-5章答疑精华汇总.docx
- 2026届高考数学总复习(第1轮)基础版第50讲 直线的方程.pptx
- 《关于组织开展能源领域氢能试点工作的通知》解读及对策.docx
- 二年级数学奇妙的动物世界跨学科项目化学习设计.docx
- 高一美术传承与创新中国近现代美术思政融合课教学设计.docx
- 2025年湖北省省直辖行政单位选调生考试(行政职业能力测验)综合能力测试题带答案.docx
- 2025年温州医科大学仁济学院单招语文测试模拟题库附答案.docx
- 2025年清远职业技术学院单招(语文)测试模拟题库附答案.docx
- 2025年湖北省咸宁市事业单位招聘考试(职业能力倾向测验)题库及答案1套.docx
- 2025年温州大学单招语文测试题库有答案.docx
- 2025年湖北省荆州市单招语文测试模拟题库a4版.docx
文档评论(0)