到无限(溪流)和超越!

Java允许您处理集合或流中的数据。 将流视为将一个集合转换为另一个集合的技术非常容易。 这可能会导致一些相当随意的代码,在该代码中,流数据被重复收集到某种类型的集合中,作为整体集合传递,然后再进行更多处理。

对于6个元素,谁在乎!

例:

 // imaginary input  List<String> list = asList( "Foo" , "Bar" , "Baz" );  // conversion and sending  List<String> bs = list.stream() .filter(item -> item.startsWith( "B" )) .collect(toList());  List<Wrapped> wrapped = bs.stream() .map(Wrapped:: new ) .collect(toList());  sendWrappedItems(wrapped.stream()); 

上面有一个代码气味,它是流的不断收集和重新流式传输,大多数人可能会注意到这一点,并且如果这只是一种方法,则会删除一些临时列表。

大多数人会。 我见过人们不这样做。

但是,如果上述方法使用子例程来处理事物,则很容易优化子例程的API的简单性,并使它们接收和返回集合。 这样您就可以完成上述行为。

解决方案是根据filtermapreduce类型函数从更高层次看待数据处理管道,并尝试围绕流对其进行建模。

但为什么?

将流视为无限

如今,我们的集装箱很小,我们希望他们能充分利用它们的资源。 小型容器(如果连续运行)可以处理无限制的数据流。 如果我们想象所有数据都是潜在的无限流,并设计我们的软件使用流技术来避免将所有数据都存储到内存中,则会发生两件事:

  • 我们将所有情况下的流的最大内存需求优化为尽可能低
  • 我们必须正确使用Streaming API,最后得到更简洁的代码,因为Stream API的声明性方面有助于描述数据转换中发生的事情。 在此过程中,我们甚至可能丢失了一些可怕的临时变量……

上面的代码将变为:

 // imaginary input  List<String> list = asList( "Foo" , "Bar" , "Baz" );  // conversion and sending  sendWrappedItems(list.stream() .filter(item -> item.startsWith( "B" )) .map(Wrapped:: new )); 

翻译自: https://www.javacodegeeks.com/2019/11/to-infinity-streams-and-beyond.html

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

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

相关文章

PicGo {“message“:“A file with this name already exists“}解决方案

这里主要是重复上传了同类型的文件导致的冲突 1、打开PicGo 2、点击并打开PicGo设置 3、将“时间戳重命名”打开 4、从新上传测试一遍就可以了 结语 用时间戳给图片命名是避免文件重复的好方式&#xff0c;推荐设置

hadoop的开发工具_Hadoop开发工具简介

hadoop的开发工具几天前&#xff0c; Apache Hadoop开发工具 &#xff08;又名HDT &#xff09;发布了。 这些项目旨在将插件引入eclipse中&#xff0c;以简化Hadoop平台上的开发。 该博客旨在概述HDT的一些重要功能。 单端点 该项目可以充当HDFS&#xff0c;Zookeeper和MR群集…

如何将PDG文件转换成PDF文件?

1、下载Pdg2Pic软件。百度网盘链接&#xff1a;http://pan.baidu.com/s/1eQyzE Pdg2Pic.rar1.05M 来自:百度网盘点击跳转网盘 2、软件为绿色版&#xff0c;解压后直接运行。 3、选择存放PDG文件的目录。 4、选择以“图片”或是“PDF”格式输出&#xff0c;并设置相应输出路…

Jakarta EE的拟议命名空间

免责声明&#xff1a;这是我的个人观点&#xff0c;并不代表雇主的观点。 到目前为止&#xff0c;由于从Oracle迁移到Eclipse Foundation&#xff0c;每个人都知道我们需要将所有javax软件包名称重命名为其他名称。 &#xff08;供参考&#xff0c;请参阅附录A&#xff09; …

如何让.gitignore文件生效

如何让.gitignore文件生效 改动过.gitignore文件之后&#xff0c;在repo的根目录下运行 # 先将当前仓库的文件的暂存区中剔除 git rm -r --cached .# 再添加所有的文件到暂存区&#xff0c;这时.gitignore文件就会生效了 git add .# 提交 git commit -m "fixed untracke…

java identity_仔细研究Java Identity API

java identity在深入探讨之前&#xff0c;让我们看一下有关Java Identity API JSR 351的一些快速事实。 这仍在进行中。 。 。 JSR是什么时候发起的&#xff1f; 该JSR在2011年10月通过了批准投票&#xff0c;随后在2011年11月成立了专家组。 谁负责此规范&#xff1f; Jav…

隐藏任务栏后任务栏出不来怎么办?任务栏快捷键

喜欢隐藏任务栏的朋友&#xff0c;是不是发现了一个有时候隐藏任务栏&#xff0c;任务栏下沉后用鼠标去唤醒&#xff0c;以重新显示任务栏而显示&#xff0c;激活不出来的问题?十分容易解决&#xff0c;见下。使用显示任务栏的快捷键。 这些问题经常出现在比如开启了一个或者…

JDK 14中更好的NPE消息

我的2019年3月博客文章“ Java会出现更好的默认NullPointerException消息吗&#xff1f; ”是在尚未针对特定JDK版本针对更好的NullPointerException消息的JEP 草案编写时编写的。 此后&#xff0c;该JEP草案成为JEP 14的 目标 JEP 358&#xff08;“ Helpful NullPointerExcep…

jvm能识别什么字符集_识别JVM –比预期要难

jvm能识别什么字符集在Plumbr&#xff0c;我们花费了上个月的时间来为将来的重大改进奠定基础。 此类构件之一是为JVM添加唯一标识符&#xff0c;以便将来自同一JVM的所有会话链接在一起。 尽管一开始似乎是一项琐碎的任务&#xff0c;但是当查看JVM捆绑的jps命令的输出时&…

Spring MVC绑定,无设置器

即使域模型对象没有设置器&#xff0c;也可以将表单参数绑定到域模型对象。 只需添加带有InitBinder方法的ControllerAdvice类&#xff0c;即可通过initDirectFieldAccess&#xff08;&#xff09;方法将应用程序配置为进行字段绑定 package boottests.controllers;import org…

idf和adf_ADF:弹出窗口,对话框和输入组件

idf和adf在本文中&#xff0c;当我们有一个af&#xff1a;popup包含af&#xff1a;dialog并在其中包含输入组件时&#xff0c;我想重点介绍一个非常常见的用例。 实现此用例时&#xff0c;需要注意一些陷阱。 让我们考虑一个简单的示例&#xff1a; <af:popup id"p1&…

自制串口示波器小工具

因为博主喜欢玩嵌入式&#xff0c;经常与各种硬件打交道&#xff0c;常常需要采集下位机的信号&#xff0c;无奈学生党&#xff0c;买不起示波器&#xff0c;自己用python写了一个串口示波器的上位机&#xff0c;可以很简单的和下位机配合组成示波器&#xff0c;效果如图&#…

ELK堆栈入门

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 好的设计原则要求微服务架构是可观察的&#xff0c;并提供集中的监视工具。 该工具使开发团队…

speex在stm32f407单片机上的移植

最近做的网络语音的项目需要用到speex中的一些功能&#xff0c;查了一下资料发现移植给mcu的经验大多零零碎碎&#xff0c;自己捣鼓了一晚上总算是移植好了&#xff0c;写个博客记录一下。1.获取speex源码 官方下载&#xff1a; 官方地址 博主移植用的源码以及移植好的工程下…

在Kafka上异步发送数据

对于一个项目&#xff0c;我试图记录用户的基本交易&#xff0c;例如添加和删除一个项目以及多种类型的项目&#xff0c;并为每笔交易向kafka发送一条消息。 日志机制的准确性不是至关重要的&#xff0c;在kafka服务器停机的情况下&#xff0c;我不希望它阻止我的业务代码。 在…

devc++工程提示“源文件未编译”的可能问题

博主使用devc5.11&#xff0c;win7&#xff0c;创建了一个c工程以后编译一直提示“源文件未编译”&#xff0c;查了两小时博客期间反复重装&#xff0c;最后还是靠自己误打误撞解决了&#xff0c;解决步骤如下&#xff1a; 1、安装时语言选择English。 网上各种教程教新人安装…

vmware网络桥接模式无法上网的解决办法

1.vmware->编辑->虚拟网络编辑器->桥接模式->选择有线网卡 2.VMware-虚拟机设置-网络适配器-桥接模式-复制物理网络连接状态、启动时连接 3.重启虚拟机&#xff0c;完成 如果出现连接到网络但是无法上网的情况&#xff0c;还需做如下处理 1.sudo gedit /etc/res…

oracle idm_深入了解Oracle IDM审核

oracle idm在处理敏感信息的任何产品中&#xff0c; 报告都是至关重要的功能。 同样适用于身份和访问管理工具。 Oracle IDM的审核模块是其OOTB报告功能的基础。 让我们快速了解一下审核引擎以及它如何促进OIM中的报告功能。 这里介绍的用例很简单– 在OIM中更改为用户记录。 …

C语言编写贪吃蛇游戏

自己用C语言编写一个贪吃蛇游戏&#xff0c;效果如图&#xff1a; 源代码可免费下载&#xff0c;传送门如下&#xff1a; 点击下载贪吃蛇游戏和源代码

JDK 13中的JEP 355文本块

JDK 13已于2019年9月17日上线GA&#xff0c; 此处列出了重要的新功能。 新功能之一是“文本块”。 这样可以轻松地编写多行字符串&#xff0c;而不必在拆分成不同的行时进行串联。 让我们快速了解创建多行字符串的不同方法&#xff1a; String aBlock """ SE…