A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.Stream流相比较传统的代码写法,哪些地方做了优化?
答:当需要对多个元素进行操作(特别是多步操作)的时候,我们首先拼好一个 “函数模型”,调用指定方法的时候,可以从一个流模型转换为另一个流模型。集合元素并没有真正被处理。只有当终结方法执行的时候,整个模型才会按照指定策略执行操作,这得益于Lambda的延时特性。
Stream操作还有两个基础的特征:
Pipelining: Stream 就如同一个迭代器(Iterator),单向,不可往复。而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。中间操作都会返回流对象本身。这样做可以对操作进行优化,比如延迟执行和短路。
内部迭代:Stream提供了内部迭代的方式,流可以直接调用遍历方法。通过stream方法创建Stream, Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator,但该方法不是返回一个控制迭代的 Iterator 对象,而是返回内部迭代中的相应接口:Stream,其一系列的操作都是在操作Stream,直到foreach时才会操作结果,这种迭代方式称为内部迭代。
2.Stream流中延迟方法有哪些,终结方法有哪些,使用了终结方法之后会怎样?
答:延迟方法有:filter,map,skip,filter,limit,concat,
终结方法:count,forEach,
使用终结方法完成对数据集中元素的处理。
3.什么情况下可以使用方法的引用优化lambda表达式?
如果Lambda要表达的函数方案已经存在于某个方法的实现中,那么则可以通过双冒号来引用该方法作为Lambda的替代者。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马