java util stream 库简介.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java util stream 库简介

java.util.stream 库简介 Java SE 8 中主要的新语言特性是拉姆达表达式。可以将拉姆达表达式想作一种匿名方法 ; 像方法一样 ,拉姆达表达式 有带类型的参数、主体和返回类型。但真正的亮点不是拉姆达表达 式本身 ,而是它们所实现的功能。拉姆达表达式使得将行为表达为数据变得很容易 ,从而使开发 有更强表达能力、更强大的库成为可能。 Java SE 8 中引入的一个这样的库是java.ut il.st ream包 (St reams) ,它有助于为各种数据来源 上的可能的并行批量操作建立简明的、声明性的表达式。较早的 Java 版本中也编写过像 St reams 这样的库 ,但没有紧凑的行为即数据语言特性 ,而且它们的使用很麻烦 ,以至于没有人 愿意使用它们。您可以将 St reams 视为 Java 中第一个充分利用了拉姆达表达式的强大功能的库 ,但它没有什么特别奇妙的地方 (尽管它被紧密集成到核心 J DK 库中 )。St reams 不是该语言的 一部分 — 它是一个精心设计的库 ,充分利用了一些较新的语言特性。 本文是一个深入探索java.ut il.st ream库的系列的第一部分。本期介绍该库 ,并概述它的优势 和设计原理。在后续几期中 ,您将学习如何使用流来聚合和汇总数据 ,了解该库的内部原理和性 能优化。 使用流的查询 流的最常见用法之一是表示对集合中的数据的查询。清单 1 给出了一个简单的流管道示例。 该管道获取一个在买家和卖家之间模拟购买的交易集合 ,并计算生活在纽约的卖家的交易总价值 。 清单 1. 一个简单的流管道 int t ot alSalesFro mNY = txns.st ream() .f ilt er(t t .get Seller().get A ddr().get St at e().equals(NY)) .mapTo Int (t t .get A mo unt ()) .sum(); f ilt er()操作仅选择与来自纽约的卖家进行的交易。mapTo Int ()操作选择所关注交易的交易 金额。最终的sum()操作将对这些金额求和。 这个例子非常容易理解 ,即使比较挑剔的人也会发现这个查询的命令版本 (f o r循环 )非常 简单 ,而且需要更少的代码行即可表达。为了体现流方法的好处 ,示例问题没有必要变得过于 复杂。流利用了这种最强大的计算原理 :组合。通过使用简单的构建块 (过滤、映射、排序、 聚合 )来组合复杂的操作 ,在问题变得比相同数据源上更加临时的计算更复杂时 ,流查询更可能 保留写入和读取的简单性。 作为来自清单 1 中的相同领域的更复杂查询 ,考虑 “打印与年龄超过 65 岁的买家进行交易的 卖家姓名 ,并按姓名排序。”以旧式的 (命令 )方式编写此查询可能会得到类似清单 2 的结果。 更多精彩攻略访问 1 清单 2. 对一个集合的临时查询 Set sellers = new HashSet (); f o r (T xn t : txns) { if (t .get Buyer().get A ge() = 65) sellers.add(t .get Seller()); } List so rt ed = new A rrayList (sellers); Co llect io ns.so rt (so rt ed, new Co mparat o r() { public int co mpare(Seller a, Seller b) { ret urn a.get Name().co mpareTo (b.get Name()); } }); f o r (Seller s : so rt ed) Syst em.o ut .print ln(s.get Name()); 尽管此查询比第一个查询稍微复杂一点 ,但很明显采用命令方法的结果代码的组织结构和可 读性已开始下降。读者首先看到的不是计算的起点和终点 ;而是一个

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档