- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我对 Java 8 中 Stream
API 的 Stream#findAny()
和 Stream#findFirst()
有点困惑。
我的理解是两者都会从流中返回第一个匹配的元素,例如,当与过滤器结合使用时?
那么,为什么同一个任务有两种方法呢?我错过了什么吗?
最佳答案
What I understood is that both will return the first matched element from the stream, for example, when used in conjunction with filter?
那不是真的。根据 javadoc, Stream#findAny()
:
Returns an
Optional<T>
describing some element of the stream, or an emptyOptional<T>
if the stream is empty. The behavior of this operation is explicitly nondeterministic; it is free to select any element in the stream. This is to allow for maximal performance in parallel operations;
而 Stream.findFirst()
将返回 Optional<T>
严格描述流的第一个元素。 Stream
类没有 .findOne()
方法,所以我想你的意思是 .findFirst()
.
关于java - Java 8 中 findAny() 和 findFirst() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359112/
Stream 的 findAny 方法选择此流中的任何元素。 findAny 方法的行为是不确定的,可以自由选择此流中的任何元素。 findAny 方法对于在并行操作中获得最大性能很有用,但不能保证每
考虑这段代码 Object found = collection.stream() .filter( s -> myPredicate1(s)) .filter( s -> myPre
我正在使用流过滤器 findAny.orElse,但它没有像我预期的那样工作,所以我想我不了解它的真正工作原理。这是我的代码 return Stream.of(getObjectAttributeVa
我不知道 Streams 内部是如何工作的,但我一直想知道为什么 Stream#findAny() 存在,而有 Stream#findFirst()。 Find first 建议流保持创建它们的数组/
我正在尝试查找列表中与给定谓词匹配的第一个(任何)成员,如下所示: Item item = items.parallelStream() .map(i -> i.doSomethingExpens
我想知道如何在数据流中使用 findAny(),当它没有找到任何巧合时,它不会返回 null。 String CountryFinal= "Spain"; List listContries = ne
在我的 Spring 应用程序中,我有一个文档类型为 QuoteOfTheDay 的 Couchbase 存储库。 .该文档非常基础,只有一个 UUID 类型的 id 字段、String 类型的 va
我想过滤列表以查找具有非空属性的元素并返回该属性: list.stream.map(a -> StringUtils.trimToEmpty(a.getProp())).filter( p -> St
我需要从嵌套的List中找到一些对象。 我认为不需要类代码,因为过滤是在嵌套的 For-Each 循环 中公开的。 int value = someValue; MyObject found = nu
我想找到给定哈希值的消息。为此,我想遍历 ascii 小写字母和数字的所有可能的 n 长度排列的集合,并检查排列的哈希值是否等于给定的哈希值。 问题:预先计算集合是不可行的,因为空间复杂度是 O(36
我有一个 Array 并想对其元素执行一些匹配。 我开始知道它可以在 java 8 中以两种方式完成: String[] alphabet = new String[]{"A", "B", "C"};
我对 Java 8 中 Stream API 的 Stream#findAny() 和 Stream#findFirst() 有点困惑。 我的理解是两者都会从流中返回第一个匹配的元素,例如,当与过滤器
我是 Java 的 Stream API 的新手,我对这个案例的结果感到困惑: Stream stream = Stream.of("A","B","C","D"); System.out.print
我是一名优秀的程序员,十分优秀!