findAny metodu
Optional döner. findAny ve findFirst arasında fark yoktur. Fark parallelleştirmede ortaya çıkar. Paralel kodlarda findFirst() ilk elemanı dönerken findAny() herhangi bir elemanı dönebilir.
Örnek
Şöyle yaparız.
Şöyle yaparız.
findFirst() bir Optional döner ve stream'in akmasını durdurur.
Stream genelde önce filtre'ye tabi tutulur. Daha sonra findFirst() çağrılır. Eğer eleman varsa akımdaki ilk elemanı verir. Optional içinde elemana ulaşmak için get() çağrılır.
Örnek
Eğer filtre kullanmazsak findFirst() iterator ile aynıdır. Şu kod aynı değeri döndürür.
Şöyle yaparız
findFirst() sonucu içinde eleman varsa, bu eleman ile bir işlem yapmak için ifPresent kullanılabilir.
Eğer findFirst() sonucu içinde eleman yoksa, orElse() ile bir başka eleman dönmesi sağlanır.
Optional döner. findAny ve findFirst arasında fark yoktur. Fark parallelleştirmede ortaya çıkar. Paralel kodlarda findFirst() ilk elemanı dönerken findAny() herhangi bir elemanı dönebilir.
Örnek
Şöyle yaparız.
list.stream()
.filter(e -> ...)
.findAny()
.orElseGet(() -> {
return ...;
});
ÖrnekŞöyle yaparız.
Optional<Something> s = list.stream()
.filter(ele -> ele.isBlue())
.map(Element::getSomething)
.findAny();
findFirst metodufindFirst() bir Optional döner ve stream'in akmasını durdurur.
Stream genelde önce filtre'ye tabi tutulur. Daha sonra findFirst() çağrılır. Eğer eleman varsa akımdaki ilk elemanı verir. Optional içinde elemana ulaşmak için get() çağrılır.
Örnek
Eğer filtre kullanmazsak findFirst() iterator ile aynıdır. Şu kod aynı değeri döndürür.
HashMap<String, String> map = ...
...
Map.Entry<String, String> entry1 = set.iterator().next();
Map.Entry<String, String> entry2 = set.stream().findFirst().get();
ÖrnekŞöyle yaparız
System.out.println(
"Result: " +
Stream.of(1, 2, 3)
.filter(i -> {
System.out.println(i);
return true;
})
.findFirst()
.get()
);
ÖrnekfindFirst() sonucu içinde eleman varsa, bu eleman ile bir işlem yapmak için ifPresent kullanılabilir.
IntStream.iterate(0, playerCount)
.map(PigDice::turn)
.filter(player -> player > -1)
.findFirst()
.ifPresent(
player ->...);
ÖrnekEğer findFirst() sonucu içinde eleman yoksa, orElse() ile bir başka eleman dönmesi sağlanır.
public static <T> T coalesce(Supplier<T>... ts) {
return asList(ts)
.stream()
.map(t -> t.get())
.filter(t -> t != null)
.findFirst()
.orElse(null);
}
Hiç yorum yok:
Yorum Gönder