郎溪 溪流

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

郎溪 溪流

郎溪 溪流_到无限(溪流)和超越!相关推荐

  1. jquery父元素和子元素点击事件传递问题_不可把父元素的事件传递给子元素_事件无限循环传递...

    前述:jquery中: 当一个元素的点击事件被触发时,会自动将该事件向父级元素逐级专递. 但是实际场景当中,我们可能会遇到需要在父级元素中定义点击事件,来触发特定子元素的点击事件,我就遇到了这么一个问 ...

  2. jq分页 不刷新页面_滑动无限加载和分页哪个对搜索引擎更友好呢?

    滑动无限加载和分页哪个对搜索引擎更友好呢? 最近,做搜索引擎优化的工作,发现谷歌只搜索了第一次加载更多前的页面,做这个功能前就有这个担心,结果还是发生了,加载更多后的页面搜索不到. 对搜索引擎优化工作 ...

  3. keep 虚拟路线修改器_王者无限技能10.2最新版-王者无限技能修改器下载

    王者无限技能是一款非常棒的修改器软件,我们可以通过这款软件可以让自己的英雄拥有无限技能,该软件的功能强大,并且安全无毒.一键安装即可使用,打开游戏以就可以打开此修改器,开启以后就在后台运行,喜欢快来下 ...

  4. 我的世界java无限水_教程/无限水水井 _ 《我的世界》中文Minecraft Wiki:最详细的官方我的世界百科...

    描述 一个无限水水井是一个提供无限水源的水池(它可以是自然生成或者由玩家制造).无限水水井可用于建设农田(种植植物需要水)或是节省步行到远处取水的来回时间.由于无限水井提供了无限水源,这意味在内陆地区 ...

  5. python 无限循环小数_有关无限循环小数的一处漏洞

    [摘 要] 几百年来,人们将无限循环小数划入有理数范围,并允许将其化为分数.本文证明无限循环小数扩大10.100.1000等倍数时将得到错误结果,进而证明将无限循环小数化为分数的行为是错误的,由此暴露 ...

  6. 乐高无限的服务器在哪里,乐高无限法老王在哪_乐高无限法老王位置地点供攻略_玩游戏网...

    <乐高无限>生物驯服圈养攻略 在乐高无限手游中生物如何驯服圈养呢?在游戏中小伙伴们是可以圈养动物的呢!那么不清楚具体玩法的话下面就来看一下吧!乐高无限生物驯服圈养攻略如何区分生物和怪物?首 ...

  7. 两个苹果手机怎么定位_苹果手机无限重启怎么办?苹果手机出现白苹果怎么办?...

    苹果手机重启,出现白苹果怎么办? 重启的原因如下: 1.电池损坏 2.电池老化 3.硬盘虚化 除以上几种原因之外还有的就是iPhone6代的通病:逻辑码片和cpu断线. 我们测试逻辑码片的时候,在正常 ...

  8. 开发实现物理加速度移动_《无限法则》开发经验分享:射击游戏的物理引擎应用和移动模拟...

    文/腾讯游戏学院 9月21日,由腾讯游戏学院举办的第三届TGDC(腾讯游戏开发者大会)在深圳举行.在大会的技术论坛中,<无限法则>服务器主程序唐骏以<无限法则>的项目经验为例, ...

  9. 绝地求生米拉马延迟高_知道无限的人:编码拉马努詹的出租车

    绝地求生米拉马延迟高 by Geoffrey Bourne 杰弗里·伯恩(Geoffrey Bourne) 知道无限的人:编码拉马努詹的出租车 (The Man Who Knew Infinity: ...

最新文章

  1. MySQL IN、Exist关联查询时,我们为什么建议小表驱动大表?
  2. 中物体的显示模式_美学,色彩模式,图像格式
  3. 我的世界服务器物品绑定插件,我的世界灵魂绑定插件详解
  4. CentOS 初体验十二:wget下载文件
  5. Mac 安装redis
  6. 算法与数据结构 (三) 二叉树的简单应用 二叉查找树,二叉堆排序
  7. Java 基础 —— Character 与 String
  8. SCSA之信息安全概述
  9. spring揭秘总结(一)——spring的Ioc容器
  10. 最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
  11. 五个维度打造研发管理体系
  12. 目前全网最详细的树莓派 Pico入门指南!
  13. 后台管理导航菜单及模板
  14. tps 、qps、bps、Bps的含义
  15. Vue 移动端实现调用相机扫描二维码或条形码
  16. 生活随记-公平和本分
  17. 邮箱客户端如何登录?
  18. Python3通过chmod修改目录或文件权限
  19. 时间序列的平稳性与差分法
  20. 罗松-东文财-赵栋201771010112罗松《面向对象程序设计(java)》第十四周学习总结...

热门文章

  1. 2020牛客暑期多校训练营(第六场)
  2. Fake Maxpooling(2020多校第二场F)
  3. CF878E-Numbers on the blackboard【并查集,贪心】
  4. P2472-[SCOI2007]蜥蜴【网络流】
  5. P5675-[GZOI2017]取石子游戏【博弈论,dp】
  6. P1496 vijos1165-火烧赤壁【离散化】
  7. vijos1056-图形面积【离散化】
  8. 2021牛客暑期多校训练营2 L-WeChat Walk(分块)
  9. 2017西安交大ACM小学期数据结构 [线段树]
  10. Oracle的分页实现