使用NetBeans Lambda支持在Java 8中使用Lambda表达式对列表进行排序

作为JSR 335的一部分, Lambda表达式已从Java 8开始引入Java语言,这是Java语言的一个重大变化。 如果您想了解更多关于Lambda表达式以及JSR 335的信息,可以访问以下资源:

  • 在OpenJDK上的Lambda项目 。
  • Lambda常见问题解答 。
  • 另一篇详细讨论lambda表达式支持的博客文章
  • JSR 335的规范草案 。



如果我研究作为JSR 335一部分进行的每项功能/更改,那么这对我以及您都会感到困惑。 因此,为了使更改更容易理解,我将选择一些用例,并尝试应用作为JSR一部分添加的功能。 在开始之前,您必须下载支持lambda表达式语法的Netbeans版本以及具有JSR 335更改的JDK构建。

  • 可以从此处下载具有JSR 335更改的JDK构建,即对lambda表达式的支持以及对collections API的增强。
  • Netbeans具有对Lambda表达式的实验支持。

一旦下载了Netbeans每晚构建zip,您将必须解压缩内容,然后导航到bin目录以启动Netbeans。 并且,一旦下载并提取了具有JSR335支持的JDK的内容,就必须在Netbeans中的“工具”->“ Java平台”菜单中创建一个新平台,以便在JSR335更改后使用JDK。 添加Java平台弹出窗口类似于:

AddJavaP_Netbeans

现在让我们考虑一个包含以下内容的列表作为示例:

List<Person> personList = new ArrayList<>();
personList.add(new Person('Virat', 'Kohli'));
personList.add(new Person('Arun', 'Kumar'));
personList.add(new Person('Rajesh', 'Mohan'));
personList.add(new Person('Rahul', 'Dravid'));

并允许使用Java 8之前的版本或当前的方法根据firstName对列表进行排序:

//Sorting using Anonymous Inner class.
Collections.sort(personList, new Comparator<Person>(){public int compare(Person p1, Person p2){return p1.firstName.compareTo(p2.firstName);}
});

如果您正在使用支持Lambda表达式的Netbeans夜间构建 ,则IDE将提供提示,内容为:
Netbeans_Lambda_Hint1

然后使用Netbeans支持将上面的代码替换为Lambda表达式,我们得到:

//Anonymous Inner class replaced with Lambda expression.
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));

人们可以看到使用Lambda表达式所减少的冗长程度。 而且现在的代码比使用Anonymous内部类时更清晰。 通过从参数中删除类型信息,可以使它更加简洁,因为从使用lambda表达式的上下文中可以推断出类型信息。

//Lambda expression with type information removed.
Collections.sort(personList, (p1, p2) -> p1.firstName.compareTo(p2.firstName));

让我们剖析上述lambda表达式以了解其组成部分。 Lambda表达式的一般语法为:()-> {} OR()->单个语句/表达式。 当lambda表达式的主体必须是一个块时,将使用()-> {}版本,而当lambda表达式具有单个语句/表达式时,将使用另一个版本。 在上述情况下,只有一个表达式,因此此处不使用块。 ()用于声明lambda表达式的参数。 参数可以具有类型信息,或者如果可以从上下文中推断出类型,则可以跳过这些参数。 在我们的例子中,类型信息是从上下文中推断出来的。 另一个观察结果是,lambda表达式等效于覆盖Comparator类中存在的compare方法。 并且它还替换了创建Anonymous Inner类的代码,以扩展Comparator类。

可以对上述代码进行的另一项更改是,“排序”方法已作为JSR 335更改的一部分添加到List类中,我们可以使用该方法对列表进行排序:

//Using sort method in List.
personList.sort((p1, p2) -> p1.firstName.compareTo(p2.firstName));

请注意,排序类存在于List类中,该类是支持JSR 335的JDK的一部分。 这只是在现有代码中使用Lambda表达式的示例示例。 有关更多详细信息,请访问我在帖子开头分享的链接。

参考: 在我们的JCG合作伙伴 Mohamed Sanaulla的“ 经验无限”博客中, 使用NetBeans Lambda支持使用Lambda表达式对Java 8中的列表进行排序 。

翻译自: https://www.javacodegeeks.com/2013/03/using-lambda-expression-to-sort-a-list-in-java-8-using-netbeans-lambda-support.html

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

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

相关文章

matlabapp窗口图像_matlab – 如何自定义App Designer图形的背景?

>如果要为整个图形设置纯色背景颜色,则执行此操作需要a documented way,例如&#xff1a;% When creating a new uifigure:fig uifigure(Color,[R G B])% if the uifigure already exists:fig.Color [R G B];>如果你想改变一些地区的背景颜色,你可以添加一个没有标题或…

qq物联网 android sdk,物联网在腾讯:QQ物联

原标题&#xff1a;物联网在腾讯&#xff1a;QQ物联在物联网方面的一些产品&#xff0c;作为BAT三巨头之一&#xff0c;腾讯自然不能落后。本文就介绍一下腾讯的物联网平台&#xff0c;QQ物联。QQ物联&#xff1a;让每个设备成为一个QQ好友QQ物联的最大特点&#xff0c;就是让每…

显式转换与隐式转换

显示转换 1.题目&#xff1a;请输入今年的年龄&#xff0c;求5年后多大&#xff1f; //a.prompt接收到的数据是string类型的。var age prompt("请输入你今年的年龄");alert(typeof age);var age5 age 5; // 这里只会拼接成了15&#xff0c;而不是加5alert("…

Vue-cli 搭建项目

Vue框架学习--使用 vue-cli 搭建项目vue-cli 是一个官方发布 vue.js 项目脚手架&#xff0c;使用 vue-cli 可以快速创建 vue 项目&#xff0c;GitHub地址是&#xff1a;https://github.com/vuejs/vue-cli一、安装node.js 首先需要安装node环境(必须)&#xff0c;可以直接到中文…

HTML音乐标签和滚动

<!-- 音乐标签 --><embed src"1.mp3" type""><embed src"1.mp3" type"" hidden"true"> <!-- 滚动 --><marquee behavior"alternate" >gun</marquee><marquee behavior&qu…

python程序会监控错误的语句_python装饰器实现对异常代码出现进行自动监控

异常&#xff0c;不应该存在&#xff0c;但是我们有时候会遇到这样的情况&#xff0c;比如我们监控服务器的时候&#xff0c;每一秒去采集一次信息&#xff0c;那么有一秒没有采集到我们想要的信息&#xff0c;但是下一秒采集到了&#xff0c; 而后每次的采集都能采集到&#x…

Spring Bean名称

除了未明确指定名称的情况外&#xff0c;Spring Bean名称很简单。 首先&#xff0c; 以这种方式为基于XML的bean定义指定Spring bean名称&#xff1a; <bean namesampleService1 classmvcsample.beanname.SampleService><constructor-arg><bean classmvcsample…

响应式框架Bootstrap栅格系统

Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的。Bootstrap 提供了一些辅助类&#xff0c;以便更快地实现对移动设备友好的开发。这些可以通过媒体查询结合大型、小型和中型设备&#xff0c;实现内容对设备的显示和隐…

JAVA基础_泛型

什么是泛型泛型是提供给javac编译器使用的&#xff0c;可以限定集合中的输入类型&#xff0c;让编译器挡住源程序中的非法输入&#xff0c;编译器编译带类型说明的集合时会去除掉”类型”信息&#xff0c;是程序的运行效率不受影响&#xff0c;对于参数化的泛型类型&#xff0c…

python!!!!惊了,这世上居然还有这么神奇的东西存在

第一次接触到python的时候实在看学习3Blue1Brown的视频线性代数的本质的时候。惊奇的是里面的视频操作&#xff0c;例如向量的变化&#xff0c;线性变换等都是由python用代码打出来的。那时的我只是以为python是类似matlab类型的数学软件。人工智能&#xff0c;大数据的兴起&am…

int定义源码 python_python学习(第一章)

1.print输出语句# 输出字符串 print(hello) # 输出数字 print(234) print("I come from China") print("I come from China") # 输出表达式 print(71) # 将数据输出到文件中 file fp open(D:/pythoncode.txt, a) print("I come from China",…

使用Specs2和客户端API 2.0进行富有表现力的JAX-RS集成测试

毫无疑问&#xff0c; JAX-RS是一项杰出的技术。 即将发布的规范JAX-RS 2.0带来了更多的强大功能&#xff0c;尤其是在客户端API方面。 今天的帖子的主题是JAX-RS服务的集成测试。 有很多出色的测试框架&#xff0c;例如REST可以确保提供帮助&#xff0c;但是我要展示的方式是使…

android设置控件形状,Android控件自定义形状

Android中处理控件的各种形状可以用到Shape&#xff0c;ApiDemos中有相关的例子&#xff0c;在com.example.android.apis.graphics中的ShapeDrawable1类中有很详细的介绍和例子。使用xml的方法也能达到同样的效果&#xff0c;而且更加方便。如下面的代码所示&#xff1a;XML/HT…

赋值

非阻塞赋值产生寄存器&#xff0c;a<b,b<c. a的值传给c需要两个时钟&#xff0c;两条语句同时执行。阻塞赋值ab&#xff0c;bc&#xff0c;两条语句顺序执行&#xff0c;不产生寄存器。 小明教ic4转载于:https://www.cnblogs.com/xiaoxuesheng993/p/7503893.html

python web开发-flask访问请求数据request

Request对象在web应用的开发中是一个非常重要的对象&#xff0c;主要用来获取用户发来的请求数据。 常用属性参考&#xff1a;http://docs.jinkan.org/docs/flask/api.html#flask.request 下面我们以一个表单提交的例子来说明一些常用request属性的使用。 创建一个表单的templa…

ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力

因此&#xff0c;您希望跨分布式主题使用ActiveMQ进行发布-订阅&#xff0c;并且要可靠。 您可以只使用永久订阅&#xff0c;对不对&#xff1f; 可以&#xff0c;但是&#xff0c;如果将群集与ActiveMQ一起使用&#xff0c;则可能会遇到意外行为。 我最近在一个客户端上&#…

android 对称加密和非对称加密,Android开发加密之对称与非对称加密算法使用案例.pdf...

Android开发加密之对称与非对称加密算法使用案例消息摘要md5&#xff1a;登录注册&#xff0c; sha1对称加密 1.des:Data Encryption Standard&#xff0c;数据加密标准 2.aes&#xff1a;Advanced Encryption Standard &#xff0c;更高级的方式对称加密特点&#xff1a;加…

unity 半透明混合问题_Unity 实时 半透明 阴影 shader

简单阴影制作思路&#xff1a;1&#xff1a;在角色脚底 放置一块平板2&#xff1a;shader中 根据平板传入的矩阵 以及 光照 对角色进行变换3&#xff1a; 得到投影在地面上的阴影4&#xff1a;阴影直接渲染到 屏幕上缺点&#xff1a;上面的阴影无法 增加半透明阴影效果&#xf…

Showplan 逻辑运算符和物理运算符参考

本文档已存档&#xff0c;并且将不进行维护。运算符说明了 SQL Server 如何执行查询或数据操作语言 (DML) 语句。 查询优化器使用运算符生成查询计划&#xff0c;以创建在查询中指定的结果或执行在 DML 语句中指定的操作。 查询计划是由物理运算符组成的一个树。 您可以使用 SE…

在win10中通过Anaconda3安装tensorflow

安装Anaconda3&#xff0c;然后在所有程序中启动“Anaconda Navigator”&#xff0c;如图&#xff1a; 切换到“Enviroments"(环境)中&#xff0c;在右边有个显示环境的列表&#xff0c;默认有"base(root)"&#xff0c;然后单击底部的”Create"按钮创建一个…