- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在另一篇文章中读到,经过调查发现 anyMatch 终端操作的工作方式是每个线程(在子流上操作)定期检查其他线程是否已找到结果,如果是,则所有其他线程都是停止了。
我假设,但想知道是否有人可以验证 noneMatch
和 allMatch
是否也以这种方式运行,所以如果在运行 noneMatch
时,一个线程找到实际匹配项,然后操作可以返回 false。那么所有其他线程是否以与 anyMatch
相同的方式定期检查它?类似地,反转是否适用于 allMatch
?
此外,我想知道在并行运行 filter
和 map
操作时,它们是在有序流上运行还是在无序流上运行时是否存在任何差异。在有序流上,我假设最合乎逻辑的好处就是不同的线程可以处理创建的每个子流,然后以相同的顺序将它们全部合并回一起。对于无序流,这对我难以想到的此类操作有任何优势吗?
最佳答案
所有三个 anyMatch
、allMatch
和 noneMatch
都是使用相同的 MatchOps
实现的设置不同标志的类。所以他们以非常相似的方式工作。它们都是短路且无序的,因此无论您的流源是否有序都没有关系:这些操作将执行得同样快。
map
和filter
等操作对无序源没有任何好处。无序源更改了distinct
、limit
、skip
、takeWhile
(Java-9)、的算法dropWhile
(Java-9)。似乎正常的减少(通过 reduce
或 collect
)不会优化无序的情况(尽管我的初步研究表明这种优化是可能的)。
关于performance - allMatch、noneMatch、filter 和 map 的 Java 流并行行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924008/
我阅读了 IntStream::noneMatch 的 Javadoc . 它说: Returns whether no elements of this stream match the provi
我想要以下逻辑:(我知道它不起作用,因为它不止一次消耗流)。但我不确定如何实现它。 Stream buffers = super.getBuffers().stream(); if (buffers.
如果找到元素,anyMatch 操作将返回 true - 如果找到匹配元素,noneMatch 操作将返回 false。 如果没有找到匹配的元素,anyMatch 操作将返回 false - 如果没有
这个问题已经有答案了: Java stream - purpose of having both anyMatch and noneMatch operations? (2 个回答) 已关闭 4 年前
我在另一篇文章中读到,经过调查发现 anyMatch 终端操作的工作方式是每个线程(在子流上操作)定期检查其他线程是否已找到结果,如果是,则所有其他线程都是停止了。 我假设,但想知道是否有人可以验证
我是一名优秀的程序员,十分优秀!