java jdt_在JDT中使用Java 8 Lambda

java jdt

知道小话的老Curmudgeon花花公子

Curmudgeon 认识Smalltalk的Dude

在修改Eclipse Java开发工具 (JDT)项目正在开发的Java 8支持时,我一直在使用这种语言。

我承认我对Java 8中的lambda有点不满意。 当然,这来自于知道Smalltalk (和LISP / Scheme)的老兄 。

像其他任何优秀的Smalltalk记号笔一样,当我着手学习如何使用lambda时,我自然决定实现已知和喜爱的集合。

从这样的事情开始:

OrderedCollection employees = new OrderedCollection();
employees.add(new Employee("Wayne", 10));
employees.add(new Employee("Joel", 9));
employees.add(new Employee("Jon", 6));
employees.add(new Employee("Anthony", 8));
employees.add(new Employee("Mary", 2));
employees.add(new Employee("Sue", 3));
employees.add(new Employee("Joanne", 7));
employees.add(new Employee("Shridar", 1));

在经典Java中,您将执行以下操作以找到具有五年以上经验的员工:

List longTerm = new ArrayList();
for(Employee employee : employees) if (employee.years > 5) longTerm.add(employee);

使用lambda,您可以执行以下操作:

OrderedCollection longTerm = employees.select(employee -> employee.years > 5);

它比经典Java更加严格,而且我个人认为它非常易读和易于理解。 具有不同经验的读者可能会有不同的选择。 我相信这比匿名类的等效实现要好得多:

OrderedCollection longTerm = employees.select(new SelectBlock() {@Overridepublic boolean value(Employee employee) {return employee.years > 5;}
});

匿名班使婴儿哭泣。

当然,婴儿也不会对select()的实现特别满意:

public class OrderedCollection<T> extends ArrayList<T> {...public OrderedCollection<T> select(SelectBlock<T> block) {OrderedCollection<T> select = new OrderedCollection<T>();for(T value : this) {if (block.value(value)) select.add(value);}return select;}...
}

Lambda是匿名类的语法糖 ,并且可以说使某些代码更易于阅读。 在我的简单化示例中,从可读性的角度来看,直接使用for循环的好处是微不足道的,但比匿名类示例容易理解。 从性能的角度来看,我希望在这种情况下使用lambda或匿名类会比仅使用for -loop差一个数量级。

我们在Smalltalk中做的比较酷的事情之一就是创建自己的控制结构。 您可以创建自定义的迭代器,而不是创建一个全新的集合,例如:

payroll.longTermEmployeesDo(employee -> payroll.giveEmployeeARaise(employee));

或类似的东西。 我不确定这是否会更好。

简单集合可能不是lambda的最佳用法。 Lambda并不像Smalltalk中的代码块那么有用(或者,我认为效率很高)。 我需要花一些时间修改一些示例,这些示例中Java中使用匿名类更为自然( Runnable和侦听器似乎是一个显而易见的起点)。

不幸的是,我认为尝试使用Java 8中的lambda实现类似于Smalltalk的集合也会使婴儿哭泣。

作为分手,请尝试将您的大脑包裹在此周围:

double average = (double)employees.inject(0, (sum, employee) -> sum + employee.years) / employees.size();

完全可读。 完全。

于2014年2月18日修改。 最初的观察使我相信,lambda是匿名类的语法糖。 从那以后,我得知事实并非如此。 此外,我需要更好地理解一些优化。 我已经删除了不正确的陈述(但是为了后代而将其保留)。

参考: Eclipse提示,技巧和Random Musings博客上的JCG合作伙伴 Wayne Beaton在JDT中使用Java 8 Lambdas玩游戏 。

翻译自: https://www.javacodegeeks.com/2014/02/playing-with-java-8-lambdas-in-the-jdt.html

java jdt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 1.8签名apk_给Android的APK程序签名和重新签名的方法

签名工具的使用Android源码编译出来的signapk.jar既可给apk签名&#xff0c;也可给rom签名的。使用格式&#xff1a;java –jar signapk.jar [-w] publickey.x509[.pem] privatekey.pk8 input.jar output.jar-w 是指对ROM签名时需使用的参数publickey.x509[.pem] 是公钥文件pri…

【渝粤教育】电大中专职业生涯规划 (3)作业 题库

1职业价值观具有明确的目的性、&#xff08; &#xff09;和坚定性的职业选择的态度和行为。 A自由性 B动机性 C自觉性 D制约性 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2不属于探索价值观方法的是&#xff08; &#xff09;。 A澄清反应法 B意见表决法 C间接…

使用Oracle验证外部数据

我经常在Corda Slack频道中闲逛&#xff0c;并尽可能回答问题。 我尝试回答的合理数量的问题与Oracle有关。 更具体地说&#xff0c;何时使用一个。 我觉得我可以回答&#xff0c;“当您需要验证可能经常更改的外部数据时使用Oracle”。 我可能在某个时候写了一个类似的答案。 …

【渝粤教育】电大中专药理学基础 (2)_1作业 题库

1.关于苯二氮卓类镇静催眠药的叙述&#xff0c;不正确的是&#xff08;&#xff09;。 A.长期应用不会产生依赖性和成瘾性 B.是目前最常用的镇静催眠药 C.可用于治疗小儿高热惊厥 D.临床上用于治疗焦虑症 E.可用于心脏电复律前给药 错误 正确答案&#xff1a;左边查询 学生答案…

【渝粤教育】电大中专计算机职业素养 (11)作业 题库

1.用冰山模型说明职业素养构成时&#xff0c;我们把浮在水面上面的知识、技能等部分称为&#xff08; &#xff09;的职业素养。 A.获得 B.显性 C.专业 D.隐性 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.职业素养的基本内容包括&#xff1a;职业道德、职业意…

java 2d 教程_Java 2D开发技巧之“灯光与阴影”

Java 2D开发技巧之“灯光与阴影”(2016-12-14 02:12:25)标签&#xff1a;杂谈一、 引言在本文中&#xff0c;我们将向你展示如何为扁平形状添加一种灯光效果以实现一种类3D外观。也许你比较满意于自己的文字表达能力&#xff0c;但一幅图片往往能够产生更好的效果。对于图形处理…

【渝粤教育】电大中专跨境电子商务理论与实务 (17)作业 题库

1.在按照交易主体类型中&#xff0c;&#xff08; &#xff09;面对的最终客户为企业或集团客户&#xff0c;提供企业、产品、服务等相关信息。 A.C2C跨境电商或平台 B.B2C跨境电商或平台 C.O2O跨境电商或平台 D.B2B跨境电商或平台 错误 正确答案&#xff1a;左边查询 学生答案…

jooq代码生成_将jOOQ与Spring结合使用:代码生成

jooq代码生成我们可能在本教程的第一部分中还记得jOOQ指出 jOOQ从您的数据库生成Java代码&#xff0c;并允许您通过其流畅的API构建类型安全SQL查询。 本教程的第一部分描述了如何配置使用jOOQ的Spring驱动的应用程序的应用程序上下文&#xff0c;但没有描述如何使用jOOQ创建类…

【渝粤题库】陕西师范大学151109财务报告分析 作业(高起专)

《财务分析》作业 一、单选题 1.以下哪个不属于杜邦分析法的优点&#xff08; &#xff09;。 2.以下哪个不是比率的具体表现形式&#xff08; &#xff09;。 3.根据财务报表的审计结果&#xff0c;具有较大可信度的审计意见类型是&#xff08; &#xff09;。 4.关于杠杆的…

【渝粤题库】陕西师范大学200131中国古代文论 作业(专升本)

《中国古代文论》作业 一、注明下列文献的作者及年代&#xff1a; 1、《典论论文》 2、《文选序》 3、《戏为六绝句》 5、《与元九书》 6、《送孟东野序》 7、《六一诗话》 8、《雪涛阁集序》 9、《文赋》 10、《诗品》 11、《诗品序》 12、《文心雕龙》 13、《沧浪诗话》 14、…

java连接到mysql_[操作系统]Java如何连接到MySQL数据库的

[操作系统]Java如何连接到MySQL数据库的0 2016-05-01 15:00:15下载&#xff1a;mysql-connector-java-5.1.38.tar.gzhttp://dev.mysql.com/downloads/connector/j/tar zxvfmysql-connector-java-5.1.38.tar.gz解压后zhouspubuntu:~/Downloads$cd ./mysql-connector-java-5.1.38…

Spark Run本地设计模式

现在&#xff0c;许多Spark应用程序已成为遗留应用程序&#xff0c;很难在本地进行增强&#xff0c;测试和运行。 Spark具有很好的测试支持&#xff0c;但仍有许多Spark应用程序不可测试。 当您尝试运行一些旧的Spark应用程序时&#xff0c;我将分享一个常见错误。 Exceptio…

【渝粤题库】陕西师范大学201771 中国古代文学(一) 作业

《中国古代文学&#xff08;一&#xff09;》作业 一、单选题&#xff08;共30小题&#xff0c;每题2分&#xff0c;共60分&#xff09; 1、先秦以“笔法”、“微言大义”著称于世的史书是&#xff08; &#xff09; A《尚书》 B《国语》 C《春秋》 D《战国策》 2、汉代“四家诗…

mave本地导入mysql的jar包_将本地的jar包引入到maven项目中

首先进入到maven的目录下&#xff0c;并且将要引入的jar包也放在这个目录下然后执行命令mvn install:install-file -DfilecheckDataAdapter-api.jar -DgroupIdorg.cegn.des -DartifactIdcheckDataAdapter-api -Dversion2.0 -Dpackagingjar等到success成功后&#xff0c;在maven…

【渝粤教育】广东开放大学 网页设计与制作 形成性考核 (25)

选择题 题目&#xff1a; 当链接指向下列哪一种文件时&#xff0c;不打开该文件&#xff0c;而是提供给浏览器下载&#xff1f;( ) 答案&#xff1a;看左侧 题目&#xff1a; 若要获得名为login的表单中名为txtuser的文本输入框的值&#xff0c;以下获取方法中&#xff0c;正…

mysql导入创建表空间_oracle创建表空间 导入数据库

oracle2 然后是创建表空间创建表空间需要创建两个一个临时表空间 一个表空间--创建表空间create tablespace abc datafile ‘D:\tablespce\LANDHIGH_SFTMS.dbf‘ size 500m;--创建用户并指定表空间create user admin identified by admin default tablespace abc quota 500m …

【渝粤教育】广东开放大学 软件工程 形成性考核 (50)

选择题 题目&#xff1a; 关于协作图的描述&#xff0c;下列哪个不正确&#xff08;&#xff09; 题目&#xff1a;多对象是UML哪个视图中的概念&#xff08; &#xff09;。 题目&#xff1a;在UML中&#xff0c;接口有几种表达方式&#xff08;&#xff09;。 题目&#xff1…

java集合根据值排序_Java 8:对集合中的值进行排序

java集合根据值排序意识到Java 8将在接下来的几周内发布其GA版本之后&#xff0c;我认为现在是时候来看看它了&#xff0c;在过去的一周里&#xff0c;我一直在阅读Venkat Subramaniam的书 。 我要讲的是第3章&#xff0c;它涉及对人员集合进行排序。 Person类的定义大致如下&…

【渝粤教育】广东开放大学民事诉讼法 形成性考核 (23)

选择题 题目&#xff1a; 调解的双方当事人依照人民调解等法律&#xff0c;自调解协议生效之日起三十日内&#xff0c;可共同向&#xff08; &#xff09;申请司法确认。 答案&#xff1a;看左侧 题目&#xff1a; 根据我国民事诉讼法的规定&#xff0c;当事人可以书面协议选…

【渝粤题库】广东开放大学 建筑制图 形成性考核

选择题 题目&#xff1a;标注坡度可用&#xff08;&#xff09;&#xff0c;百分数&#xff0c;分数等三种形式。 题目&#xff1a;以下哪种工具不属于常用绘图工具()。 题目&#xff1a;H面上产生的投影叫作&#xff08;&#xff09;。 题目&#xff1a;下列关于投影叙述正确的…