java 基础包的功能_Java 8的功能基础

java 基础包的功能

Revolution_small Java 8彻底改变了Java。 它很可能是过去10年中最重要的Java版本。 有很多新功能,包括默认方法,方法和构造函数引用以及lambda, 仅举几例 。

更有趣的功能之一是新的java.util.stream API,正如Javadoc所述,该API支持

元素流上的函数式操作,例如集合上的map-reduce转换

将此新API与lambda表达式结合使用,您将获得简洁而强大的语法,该语法可通过应用投影显着简化代码。

以表面上简单的过滤集合为例。 在这种情况下,将创建一个简单的Message类型Collection ,如下所示:

创建消息集合

List<Message> messages = new ArrayList<>();
messages.add(new Message("aglover", "foo", 56854));
messages.add(new Message("aglover", "foo", 85));
messages.add(new Message("aglover", "bar", 9999));
messages.add(new Message("rsmith", "foo", 4564));

在此集合中,我想过滤出Message ,其delay (第3个构造函数参数)大于3,000秒。

在Java 8之前 ,您可以像这样手动阻塞这种逻辑:

过滤旧派风格

for (Message message : messages) {if (message.delay > 3000) {System.out.println(message);}
}

但是,在Java 8中,此工作变得更加简洁。 集合现在支持stream方法,该方法将基础数据结构转换为可迭代的对象流,从而允许使用lambda表达式的新型功能操作。 这些操作大多数也可以链接在一起。 这些可链接的方法称为“ 中间” ,不能链接的方法称为“ 终端”

简而言之,lambda表达式与匿名类非常相似,只是语法更少 。 例如,如果您查看Javadocs中Streamfilter方法的参数,您将看到它采用了Predicate类型。 但是,您不必像在使用匿名类的Java 8之前那样实现该接口。 因此,用于过滤所有大于3000的delay值的Predicate lambda表达式为:

Lambda表达式

x -> x.delay > 3000

其中x是为流中的每个值传递的参数, ->右边的所有内容都是要计算的表达式。

将所有这些放到Java 8中可以得出:

流lambdas!

messages.stream().filter(m -> m.delay > 3000).forEach(item -> System.out.println(item));

有趣的是,由于Java 8的其他一些新功能, forEach的lambda可以进一步简化为:

流lambda更短!

messages.stream().filter(m -> m.delay > 3000).forEach(System.out::println);

由于forEach lambda的参数仅由println ,因此Java 8现在允许您完全删除该参数。

之前,我提到过流允许您链接lambda-在上述情况下, filter方法是一种中间方法,而forEach是一种终端方法。 功能程序员可以立即识别的其他中间方法是: mapflatMapreduce ,仅举几例。

详细地说,我想查找所有延迟超过3,000秒的Message ,并总结总延迟时间。 没有功能魔术,我可以写:

Prosaic Java

long totalWaitTime = 0;
for (Message message : messages) {if (message.delay > 3000) {totalWaitTime += message.delay;}
}

尽管如此,使用Java 8和一些function-foo,您可以实现更优雅的代码构造,如下所示:

Java 8优雅

long totWaitTime = messages.stream().filter(m -> m.delay > 3000).mapToLong(m -> m.delay).sum();

请注意,我如何链接filtermapToLong方法以及终端sum 。 顺便说一句, sum方法需要一种特定的地图样式方法,该方法可以产生基本类型的集合,例如mapToLongmapToInt等。

将功能样式编程作为一种核心语言功能,是一种非常强大的结构。 并且,尽管许多技术已在各种第三方库(如Guava)和JVM语言(如Scala和Groovy)中提供,但拥有这些语言核心的功能肯定会吸引更多的开发人员,并对开发前景产生最大的影响。

毫无疑问,Java 8极大地改变了Java语言 。

翻译自: https://www.javacodegeeks.com/2014/03/java-8s-functional-fomentation.html

java 基础包的功能

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

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

相关文章

PDH光端机的原理_PDH光端机的作用优点

随着通信技术的不断发展&#xff0c;自从有了PDH光端机这个新的设备&#xff0c;在信息的传输方面真的便利了我们很多&#xff0c;不过&#xff0c;对于这个新的装备PDH光端机&#xff0c;估计大多数小伙伴都不太了解吧&#xff0c;那么为了让大家跟上时代的步伐&#xff0c;接…

linux usb声卡 submit urb,linux usb urb详解

linux usb urb详解谨以此文纪念过往的岁月一.前言在前文中看过了hub的驱动以及host的驱动还有usb设备的驱动&#xff0c;在把这些东西关联起来的东东中&#xff0c;一个很重要的urb(usb request blk)&#xff0c;在本文中会详细来看urb的实现&#xff0c;以及具体的应用。二.Ur…

新一代蓝牙对工业物联网(IIOT)的应用

蓝牙是一种收到市场广大认可的一种无线通信技术&#xff0c;并且得益于Mesh组网、低功耗和传输速度快等方面的优势&#xff0c;蓝牙在工业物联网中也起着极为重要的地位。 此外市场上的无线连接技术有着很多的种类&#xff0c;每项技术都这其优缺点和使用环境&#xff0c;包括w…

【渝粤教育】国家开放大学2019年春季 8042-22T养殖业基础 参考试题

科目编号&#xff1a;[8042] 座位号 2018-2019学年度第二学期期末考试 养殖业基础 试题 2019年 5月 一、名词解释&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 1.必需氨基酸 2&#xff0e;嗳气 3&#xff0e;质量性状 4.人工授精 5.负…

LoRa通信技术和其优势

LoRa 是LPWAN通信技术中的一种&#xff0c;是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案的出现改变了以往关于传输距离和功耗需要折中的考虑方式&#xff0c;为用户提供了一种简单的能实现远距离通信、电池寿命长、大容量的系统&#xff0c…

【渝粤教育】电大中专常用电器与PLC控制 (2)作业 题库

1.三相笼型异步电动机的电气控制线路中&#xff0c;如果使用热继电器作过载保护&#xff0c;就不必再装设熔断器作短路保护。 A.正确 B.错误 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.交流接触器通电后如果铁心吸合受阻&#xff0c;将导致圈烧毁。 A.正确 B…

Linux下读取smBIOS源码,Linux下读取SMBIOS信息

来源&#xff1a;http://www.linuxde.net/2013/02/12499.htmluefi shell下使用smbiosviewlinux下使用dmidecode 或者amidecode(amidecode貌似只支持服务器端AMI平台产品)使用方法 dmidecode -t type_numtype_num表规范如下&#xff1a;SMBIOS specification 2.7.1 中定义了如下…

E95-DTU(4G01-485)数传电台的特点及其应用详解

1、E95-DTU(4G01-485简介 E95-DTU(4G01-485)是采用 4G CAT1 方案的云数传电台&#xff0c;电台支持微信小程序简单配对使用。可以显现一对一、一对多、多对多等复杂应用场景。由于采用了云技术&#xff0c;数传电台相互透传的距离不受限制。 云数传电台作为一种突破性的数传产…

【渝粤题库】陕西师范大学300003 世界史 (上)

《世界史 (上)》作业 一、名词解释 1&#xff0e;氏族 2&#xff0e;《吉尔伽美什史诗》 3&#xff0e;“空中花园” 4&#xff0e;邪马台国  5&#xff0e;托马斯阿奎那 6&#xff0e;图腾崇拜 7&#xff0e;贝希斯敦铭文 8&#xff0e;荷马史诗 9&#xff0e;《罗马民法大全…

SDH光端机概述与技术应用详解

SDH技术自从90年代引入以来&#xff0c;至今已经是一种成熟、标准的技术&#xff0c;在骨干网中被广泛采用&#xff0c;且价格越来越低。SDH光端机可广泛应用于电信数据业务、电力、银行、公安、部队等部门公用电话网接入或专线信息传输。接下来飞畅科技的小编将来为大家详细讲…

物联网技术在智慧校园中的应用

虽然很多人可能会不注意&#xff0c;但是物联网技术已经很普遍的应用在了我们的生活当中&#xff0c;小到日常穿戴、出行&#xff0c;大到农业、工业领域。 物联网应用的范围现在已经遍布在我们生活的各个角落&#xff0c;让物体和物体之间能够时间沟通互联。随着物联网的不断发…

【渝粤教育】21秋期末考试市场调查与预测10243k2

1、运用算术平均法预测时&#xff0c;一般地说&#xff0c;当时间序列资料波动&#xff08;&#xff09;时&#xff0c;其观察期可以&#xff08; &#xff09;&#xff0c;所用数据可以&#xff08; &#xff09;。 &#xff08;3 分&#xff09; A&#xff0e;小 短些 少些 B…

junit测试设置不回滚_正确设置JUnit测试名称

junit测试设置不回滚寻找好名字是手工软件的挑战之一。 您需要随时随地找到它们-类&#xff0c;方法&#xff0c;变量&#xff0c;仅举几例。 但是&#xff0c;什么使名字成为好名字呢&#xff1f; 引用Oncle Bob的话&#xff1a;“三件事&#xff1a;可读性&#xff0c;可读性…

linux中用参数代替键盘输入,Linux终端中使用上一命令减少键盘输入

减少键盘输入&#xff0c;可以大大提高程序员的工作效率&#xff0c;快捷键的使用就是一个很好的例子。程序员经常使用终端。那么在终端上有没有类似的“快捷键”可以提高我们的效率呢&#xff1f;程序员的工作往往是前后相关连的。所以&#xff0c;本文将演示如何使用上一条命…

【渝粤题库】陕西师范大学209006教育政策与法规作业(高起专、高起本)

单选题 1、( )是发扬社会主义民主&#xff0c;加强党的领导在教育领域的直接体现和必然要求。 A依法治教 B教师申诉制度 C教育法 D 教育行政法 2、&#xff08; &#xff09;是在社会主义市场经济条件下&#xff0c;教育进一步改革与发展的客观需要。 A依法治教 B教师申诉制度 …

光端机图像出现噪点或者数据有时不通的情况

光端机是常用的视频输入设备&#xff0c;主要是远距离传输视频、音频、数据,以太网等业务&#xff0c;抗干扰性能强&#xff0c;但是我们在使用光端机的过程中难免也会遇到一些问题&#xff0c;比如说是光端机的图像出现噪点或者数据有时不通的情况&#xff0c;那么&#xff0c…

创建一个Java :: Geci生成器

几天前&#xff0c;我写了有关Java :: Geci架构&#xff0c;代码生成原理以及生成Java源代码的可能不同方式的文章。 在本文中&#xff0c;我将讨论在Java :: Geci中创建生成器有多么简单。 您好&#xff0c;Wold生成器 HelloWorld1 最简单的生成器是Hello, World! 发电机。…

物联网技术的应用和发展

和数字城市、无线城市、智能城市这些理念不同&#xff0c;智慧城市是源于2010年。它是建立在云计算和物联网技术等技术的蓬勃发展的基础上&#xff0c;并与政府行业的需求相结合而产生的。 所以&#xff0c;智慧城市并没有一个特定的标准&#xff0c;智慧城市也难以一蹴而就&am…

c语言 将点同时保证x坐标从小到大,y坐标从小到大地排序,C语言第五六次作业.ppt...

《C语言第五六次作业.ppt》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言第五六次作业.ppt(40页珍藏版)》请在人人文库网上搜索。1、C语言作业解析,第四弹,。原来真正变态的是这两作业哇 原本是做完第五次作业等大家数分期中考完以后给大家&#xff0c;结果直接…

物联网应用技术的十大基础功能

物联网应用技术是基于互联网的基础&#xff0c;在互联网发展到一定的程度后&#xff0c;物联网应用技术也就应运而生。众所周知&#xff0c;物联网最基本的功能特征就是“无处不在的链接和在线服务”&#xff0c;此外还具备以下十大基本功能&#xff1a; 1、定位追溯&#xff1…