FindAny Stream içerisinde yer alan herhangi bir elemanı döndürmektedir. Burada hangi elemanın geleceği belirsizdir fakat çoğunlukla ilk elemanın dönderileceğini söyliyebiliriz. Findany Stream operasyonu kullanıldıktan sonra direk olarak Stream kaynağımızdaki veri tipinde dönüş alamayız Optional adı verilen sınıflar kullanılır.
Findfirst operasyonunda ise Stream kaynağımız içerisinde yer alan ilk elemanı yine findanyde olduğu gibi Optional nesnesi olarak alabilmekteyiz.
Optional sınıfları bir veri tipinin null olmasını kontrol edebilmek amaçlı olarak yazılmışlardır, bir optional nesnesi üzerinden tanımlandığı veri tipindeki değişkenin var olup olmadığını kontrol edebiliriz. Aslında bu yapı multithreadin içerisinde daha çok önemlidir.
Optional içerisindeki get metodu kullanılarak içerisindeki değişkene erişilebilir veya isPreset metodu kullanılarak değişkenin null olup olmadığı kontrol edilebilir.
OptionalInt a = IntStream.range(0, 20).findAny(); System.out.println(a.getAsInt());
OptionalInt a = IntStream.range(0, 20).findFirst(); System.out.println(a.getAsInt());