Pur*_*ari 1 java performance filtering predicate java-stream
使用Java 8+,您可以轻松找到与a匹配的集合的所有元素Predicate.
someCollection.stream().filter(somePredicate)
Run Code Online (Sandbox Code Playgroud)
然后你可以找到第一个元素:
someCollection.stream().filter(somePredicate).findFirst()
Run Code Online (Sandbox Code Playgroud)
但问题是,它会Predicate针对所有元素运行.有没有一种干净的方法只能运行Predicate反对元素,直到找到第一个匹配,然后返回它,就像它一样anyMatch(但返回一个boolean告知是否找到一个)?
它完全符合你的要求.它不会遍历所有元素.该filter方法创建一个流,并在其上findFirst创建另一个流.
因此,当您尝试获取在findFirst()您只获得与谓词匹配的第一个之后创建的流的元素时.
检查的最佳方法是在谓词中添加打印行或类似内容.
创建一个整数流,例如从0到10,并创建一个打印数字的谓词,然后检查它是否除以3.你将打印出来:0,1,2,3就是这样.
我在过去写过一个问题+答案,详细解释它是如何工作的:理解java 8 stream的过滤方法
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |