企业免费网站推广公司,成功的营销网站的例子,网站建设的技术方案,设计好的网站郎溪 溪流Java允许您处理集合或流中的数据。 将流视为将一个集合转换为另一个集合的技术非常容易。 这可能会导致一些相当随意的代码#xff0c;其中流数据被重复收集到某种类型的集合中#xff0c;作为一个整体集合传递#xff0c;然后再进行更多处理。 对于6个元素#… 郎溪 溪流 Java允许您处理集合或流中的数据。 将流视为将一个集合转换为另一个集合的技术非常容易。 这可能会导致一些相当随意的代码其中流数据被重复收集到某种类型的集合中作为一个整体集合传递然后再进行更多处理。 对于6个元素谁在乎 例 // imaginary input ListString list asList( Foo , Bar , Baz ); // conversion and sending ListString bs list.stream() .filter(item - item.startsWith( B )) .collect(toList()); ListWrapped wrapped bs.stream() .map(Wrapped:: new ) .collect(toList()); sendWrappedItems(wrapped.stream()); 上面提到的是代码气味它是流的不断收集和重新流式传输大多数人可能会注意到这一点并且如果这只是一种方法则会删除一些临时列表。 大多数人会。 我见过人们不这样做。 但是如果上述方法使用子例程来处理事情则很容易优化子例程的API的简单性并使它们接收和返回集合。 这样您就可以完成上述行为。 解决方案是从filter map和reduce类型函数的角度来看高层数据处理管道并尝试围绕流对其进行建模。 但为什么 将流视为无限 如今我们的集装箱很小我们希望他们能充分利用它们的资源。 小型容器如果连续运行可以处理无限制的数据流。 如果我们想象所有数据都是潜在的无限流并设计我们的软件使用流技术来避免将所有数据都存储到内存中则会发生两件事 我们将所有情况下的流的最大内存需求优化为尽可能低 我们必须正确使用Streaming API 并且最终得到更简洁的代码因为Stream API的声明性方面有助于描述数据转换中发生的事情。 我们甚至可能在此过程中丢失了一些可怕的临时变量…… 上面的代码将变为 // imaginary input ListString 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郎溪 溪流