Java 8 の findAny() と findFirst() の違い 質問する

Java 8 の findAny() と findFirst() の違い 質問する

Java 8 の APIとStream#findAny()の違いが少しわかりません。Stream#findFirst()Stream

私が理解したのは、たとえばフィルターと組み合わせて使用​​した場合、どちらもストリームから最初に一致した要素を返すということですか?

では、なぜ同じタスクに 2 つの方法があるのでしょうか? 何か見落としているのでしょうか?

ベストアンサー1

私が理解したのは、たとえばフィルターと組み合わせて使用​​した場合、どちらもストリームから最初に一致した要素を返すということですか?

それは真実ではありません。Javadocによると、Stream#findAny():

Optional<T>記述を返すいくつかのストリームの要素、またはOptional<T>ストリームが空の場合は空。この操作の動作は明示的に非決定的です。ストリーム内の任意の要素を自由に選択できます。これは並列操作で最大のパフォーマンスを実現するためです。

その間Stream.findFirst()Optional<T>記述を返します厳密にストリームの最初の要素。Streamクラスにはメソッドがないので.findOne()、 を意味していると思います.findFirst()

おすすめ記事