|
|
1
19
你的终端操作,
第一个流将打印:
短路终端操作(其中
|
|
|
2
7
惰性对于API的用户来说非常有用,尤其是当最终的结果
|
|
3
4
|
|
4
4
我有一个来自我们代码库的真实示例,因为我要简化它,不完全确定您是否喜欢它或完全理解它。。。
我们的服务需要
在溪流出现之前,我们用
这并不是溪流的基本特征,即使没有番石榴也可以做到,但这样做简单多了。这里提供的示例
|
|
5
3
问得好。
考虑下面的例子。
给定上述方法,下一个测试应该显示它们在大约相同的时间内执行。
不管怎样,我们大部分时间都呆在公园里
调整stream方法很简单(考虑到您的操作满足并行流的前提条件)。
在没有流的情况下实现相同的行为可能很棘手。
测试再次在大约相同的时间执行。
,尽管我们并没有从流中获得很大的性能优势(考虑到您在自己的应用程序中编写了优秀的多线程代码)
与编程语言一样,更高层次的抽象(
|
|
|
6
2
一个有趣的用例还没有提到,它是流上操作的任意组合,来自代码库的不同部分,响应不同种类的业务或技术需求。
如果没有惰性流,代码的同一部分可能会过滤已经实现的完整集合,但这可能会很昂贵,因为没有真正的收益。 或者,代码的同一部分可能希望将其筛选器附加到数据源,但现在它必须知道数据是否来自数据库,以便可以附加WHERE子句或其他源。
因此,更好的抽象、更好的性能、更好的代码可读性和可维护性,对我来说似乎是一个胜利 |
|
|
7
0
非惰性实现将处理所有输入,并将输出收集到每个操作的新集合中。显然,对于无限或足够大的源来说是不可能的,否则会消耗内存,并且在减少和短路操作的情况下会消耗不必要的内存,因此有很大的好处。 |
|
|
livthomas · 如何在Angular应用程序中延迟加载库 7 年前 |
|
|
Sameer · 为延迟加载的模块创建公共模块 7 年前 |
|
|
Philip Feldmann · 帆。js延迟加载模型 7 年前 |
|
|
Perp · 如何将Web包中的节点模块与异步块分离? 7 年前 |
|
|
Bob Ramsey · 需要关于延迟加载mat手风琴内容的帮助 7 年前 |
|
|
JSON · 如何将子组件设置为路由器出口的默认路由?[副本] 7 年前 |