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;接…

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

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

LoRa通信技术和其优势

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

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

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

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

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

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

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

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

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

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

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

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

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

物联网技术的应用和发展

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

光端机与光电转换器的区别介绍

光端机与光电转换器从本质上讲没啥明百显的界限或区别&#xff0c;都是把光信号和电信号之间做个转换度。实际使用上&#xff1a;光电转换器&#xff08;知俗称‘收发器’&#xff09;&#xff0c;一般用道来传输数据信号&#xff1b;而光端机一般指的都内是视频光端容机&#…

物联网在智慧林业中的应用

以森林防火视频监控、道路视频监控、红外野保相机、生态因子监测、水文水质监测、无线通信专网等物联网相关技术在林业科研、生产、管理及服务上都得到了非常广泛的应用&#xff0c;并且已经成为了支撑智慧林业发展的只要信息手段。 智慧林业具有感知化、物联化、智能化、生态化…

物联网无线传输技术有哪些?

随着万物互联的时代到来&#xff0c;物体与物体之间的链接方式也在随着时代不断的发展。如果说传感器是物联网的触觉&#xff0c;那么无线传输技术就是物联网的神经系统&#xff0c;将遍布在物联网各处的传感器链接起来。在物联网出现之前&#xff0c;网络的接入需求主要集中在…

武警五防一体化是什么?五防光端机产品介绍!

五防功能是指&#xff1a;&#xff08;1&#xff09;防止误分、抄合断路器。&#xff08;2&#xff09;防止带负荷分、合隔离开关。&#xff08;3&#xff09;防止带电挂&#xff08;合&#xff09;接地线&#xff08;接地刀闸&#xff09;。 &#xff08;4&#xff09;防止带接…

物联网对石油燃气行业的作用

在石油和天然气行业中&#xff0c;应为物联网的特性&#xff0c;能达到很多人工难以达到的效果&#xff0c;让企业更高效方便的开展日常的运营监察工作。 下面就是物联网在油气行业中的真实应用场景&#xff1a; 钻井管理 钻井是油气行业重要的基础组成部分。物联网就能显著的提…

java教程java自学_15必须阅读Java 8教程

java教程java自学Java 8于上个月发布&#xff0c;并且充满了新功能和幕后优化。 互联网在覆盖所有这些新增功能&#xff08;包括好与坏&#xff09;方面都做得相当不错 。 我认为最好汇总一下我们认为是其中最好的一些教程&#xff0c;以帮助您快速掌握最新知识和需要了解的知识…

简要分析光端机选购必备条件

目前&#xff0c;市场上出现很多假冒伪劣的光端机&#xff0c;为了让安防用户或消费者能够更清楚地了解光端机从生产到出厂的过程&#xff0c;我们一同关注从生产加工到出厂&#xff0c;光端机如何挑战三重质检&#xff0c;最终的合格产品。安防产品不同于不同的消费品&#xf…

zigbee智能家居

近几年来&#xff0c;智能家居设备的增长速度是极快的。曾经也被称作家庭自动化&#xff0c;和现在的“物联网”&#xff0c;已经转化为我们更加方便理解的类型了&#xff0c;我们统称为智能家居。现在不断出现的暖气、照明、摄像头、和传感器以及现在不断出现的新设备&#xf…

物联网和互联网的区别

互联网开始于1969年美国的阿帕网。是网络与网络之间做成的一种网络形式。这些网络通过一组通用的协议连接&#xff0c;形成一个巨大的国际性网络。通常interne就是泛指互联网&#xff0c;而Internet则指的是因特网。这种将计算机网络相互链接在一起的方式就称作“网络互联”&am…

JMetro版本5.3已发布

JMetro的另一个版本刚刚发布。 这次是5.3版。 在此版本中&#xff0c;为尚未使用的控件添加了一些新样式。 还调整了一些较旧的样式&#xff0c;并修复了一些错误。 我还将展示一些使用JMetro的大公司。 诸如Google&#xff0c;Amazon等的名称。 以下是添加的样式&#xff1a…