我不太了解与 Java Stream API 的findFirst()区别findAny()。
我以为它findFirst()返回流的第一个元素,流findAny()的元素是随机的。
但是当我运行 2 个代码示例时:
Stream.of(...).findFirst()和Stream.of(...).findAny()
然后它们都返回流的第一个元素。为什么?他们都在做同样的任务吗?
我不太了解与 Java Stream API 的findFirst()区别findAny()。
我以为它findFirst()返回流的第一个元素,流findAny()的元素是随机的。
但是当我运行 2 个代码示例时:
Stream.of(...).findFirst()和Stream.of(...).findAny()
然后它们都返回流的第一个元素。为什么?他们都在做同样的任务吗?
不。根据 JavaDoc
Stream#findAny():也就是说,对于非并行流,它将返回第一个元素。并且使用并行流,它可以返回任何元素。
而
Stream#findFirst()将 return ,严格Optional<T>存储流的第一个元素。显然,对存在的目标也存在误解
Stream.of(...).findAny()。您可能不应该使用此方法来生成随机值。尽管如此,仍假定此方法之前将带有 filter() 谓词,该谓词将以某种方式减少选择,并且将从该过滤后的流中获取任何(第一个,第五个,任何,任何意味着任何)元素。