Java 8 の APIとStream#findAny()
の違いが少しわかりません。Stream#findFirst()
Stream
私が理解したのは、たとえばフィルターと組み合わせて使用した場合、どちらもストリームから最初に一致した要素を返すということですか?
では、なぜ同じタスクに 2 つの方法があるのでしょうか? 何か見落としているのでしょうか?
ベストアンサー1
私が理解したのは、たとえばフィルターと組み合わせて使用した場合、どちらもストリームから最初に一致した要素を返すということですか?
それは真実ではありません。Javadocによると、Stream#findAny()
:
Optional<T>
記述を返すいくつかのストリームの要素、またはOptional<T>
ストリームが空の場合は空。この操作の動作は明示的に非決定的です。ストリーム内の任意の要素を自由に選択できます。これは並列操作で最大のパフォーマンスを実現するためです。
その間Stream.findFirst()
Optional<T>
記述を返します厳密にストリームの最初の要素。Stream
クラスにはメソッドがないので.findOne()
、 を意味していると思います.findFirst()
。