达令说

有趣的是,面试问题只问优点,而不问缺点,因为两者都有。流是一种更具声明性的样式。或更富有表现力的风格。它可以被认为是更好的声明你的代码的意图,而不是描述如何,它的完成: return people     .filter( p -> p.age() < 19)     .collect(toList());...很清楚地说,您正在从列表中过滤匹配的元素,而: List filtered = new ArrayList<>(); for(Person p : people) {     if(p.age() < 19) {         filtered.add(p);     } } return filtered;说“我正在循环”。循环的目的被深深地埋在了逻辑中。溪流通常更短。相同的示例显示了这一点。Terser并不总是更好,但是如果您可以同时简洁和富于表现力,那就更好了。流与功能具有很强的亲和力。Java 8引入了lambda和功能接口,从而打开了包含强大技术的整个玩具箱。流提供了将函数应用于对象序列的最方便自然的方法。流鼓励较少的可变性。这与功能编程方面有关-使用流编写的程序往往是不修改对象的程序。溪流鼓励松散的耦合。您的流处理代码不需要知道流的源或其最终的终止方法。流可以简洁地表达相当复杂的行为。例如: stream.filter(myfilter).findFirst();乍一看,好像它过滤了整个流,然后返回第一个元素。但是实际上findFirst()驱动了整个操作,因此在找到一项后它有效地停止了。流为将来提高效率提供了空间。一些人进行了基准测试,发现内存中List或数组中的单线程流可能比等效循环慢。这是合理的,因为有更多的对象和开销在玩。但是溪流规模。除了Java对并行流操作的内置支持之外,由于模型合适,因此有一些使用Streams作为API的分布式映射减少库。劣势?性能:for数组循环在堆和CPU使用率方面都非常轻巧。如果原始速度和内存节俭是优先考虑的事情,那么使用数据流会更糟。熟悉。世界上到处都是经验丰富的程序程序员,来自许多语言背景,他们熟悉循环并且流是新颖的。在某些环境中,您想编写这种人熟悉的代码。认知开销。由于它具有声明性,并且越来越多地从下面发生的事情中提取内容,因此您可能需要构建一个新的思维模型来了解代码与执行的关系。实际上,仅在出现问题或需要深入分析性能或细微的错误时才需要这样做。当它“起作用”时,它就起作用。调试器正在改进,但是即使在现在,当您逐步调试调试器中的流代码时,它也比等效循环更难工作,因为简单的循环非常接近传统调试器所使用的变量和代码位置。

java流有什么用_在Java中,流比循环有什么优势?相关推荐

  1. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  2. Java读取文件流用什么对象_使用Java IO流实现对文本文件的读写过程中,通常需要处理下列( )异常。_学小易找答案...

    [论述题]请根据第一次平时作业的选题,结合第二次课内容,自拟一个论文提纲. [单选题]在 switch ( expression )语句中, expression 的数据类型不能是 ( ) [单选题] ...

  3. java导出数据透视表_使用数据库中的Java流制作数据透视表

    java导出数据透视表 来自数据库行和表的原始数据不能为人类读者提供太多了解. 相反,如果我们对数据执行某种聚合,则人类更有可能看到数据模式 在向我们展示之前. 数据透视表是聚合的一种特定形式,我们可 ...

  4. java流式传输对象_使用Java 8在地图上流式传输

    java流式传输对象 在本文中,我将向您展示如何在标准Java映射上有效地实现Speedment Open Source流,并将Stream接口扩展为MapStream! 即使在复杂的情况下,此添加将 ...

  5. java 中文域名转码_转换java方法

    java date String 类型相互转换 这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new D ...

  6. java 多态判断非空_收藏Java 面试题全梳理

    脚本之家 你与百万开发者在一起 来源 | Java建设者(ID:javajianshe) 作者 |cxuan 如若转载请联系原公众号 Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行 ...

  7. java使用缓冲区读取文件_在Java中使用Google的协议缓冲区

    java使用缓冲区读取文件 最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 . 在此版本中,显然存在与Java 7 , ...

  8. java 泛型和类型擦除_关于Java泛型和擦除

    java 泛型和类型擦除 "编译期间擦除泛型"是常识(好吧,类型参数和实参实际上是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所 ...

  9. java中远程连接忽略证书_忽略Java中的自签名证书

    java中远程连接忽略证书 我在职业生涯中遇到过几次问题,就是我们有时希望允许自签名证书用于开发或测试目的. Google的快速搜索显示了多年来无数Java开发人员遇到的麻烦. 根据确切的证书问题,您 ...

  10. 为啥JAVA虚拟机不开发系统_理解Java虚拟机体系结构

    1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...

最新文章

  1. 工业互联网 — 5G TSN
  2. px4flow智能光学流动传感器
  3. Java基础day24
  4. 个人作业——软件产品分析
  5. android预览界面编译出错,Android O预览findViewById编译错误
  6. 《世界已无法阻挡Python入侵!》(附学习资源)
  7. postbody传参_java 测试post请求 在body里面传递参数怎么设置,怎么接收
  8. PSP完美手感十字键改造超详细攻略
  9. 最优化方法(最速下降、牛顿法、高斯牛顿法、LM算法)
  10. 最新2016年春运抢票12306买下铺攻略
  11. python微信小程序抢购教程_微信小程序系统教程[高级阶段]——python版电商系统...
  12. 如何设计 RQData 通讯协议 - Ricequant米筐量化
  13. MMD中的VMD文件格式详解
  14. C语言——伸缩型数组成员
  15. ceil在c 语言中的用法,在C中实现ceil()
  16. 工作笔记--百度地图API卫星图 ,还有路网去除 。
  17. 100元买三种笔共100支笔c语言,CSP-J/S认证C++典型例题26——买笔方案(switch语句)...
  18. 从备考PMP到与项目经理同呼吸
  19. Python数据可视化:香港地图、房价可视化,绘制气泡图
  20. 为MTK andorid系统添加adb reboot factory命令

热门文章

  1. java同步通信_java-线程-线程同步通信技术
  2. 信号与系统考研复习例题详解_小语种日语日本文学复习考研资料加藤周一《日本文学史序说(上)》笔记和考研真题详解...
  3. 计算机专业虽然好,但是也要有这些潜质才去选择
  4. axios发送post数据后台收不到_axios 发 post 请求,后端接收不到参数的解决方案
  5. stm32串口_【单片机】STM32串口基本配置
  6. android if else,Android对很多if和else条件
  7. c语言实现全排列并存储,C语言实现全排列和回溯法总结
  8. tomcat7 java_java开发环境配置(windows下JDK7+tomcat7)
  9. servlet到mysql_在servlet中搜索代码到mysql?
  10. bypass最新版d盾mysql_Bypass D盾_IIS防火墙SQL注入防御(多姿势)