map ve flatMap
- Java kursu
- İleri seviye
- Ders 9/82
- 5 dk
Optional üzerinde map ve flatMap'i öğrenirsin.
Optional map ile dönüştürme
Optional.map(işlev), değer varsa verilen işlevi uygular ve sonucu yeni bir Optional olarak döndürür. Değer yoksa boş Optional döner; işlev hiç çağrılmaz.
Örnek: opt.map(String::length). Eğer opt Optional.of("Ayşe") ise sonuç Optional.of(4)'tür. Boş Optional için sonuç yine boştur. Bu, null denetimi yapmadan güvenli dönüşüm yapmanın en kısa yoludur.
İç içe Optional: flatMap
Eğer map'e verdiğin işlev zaten bir Optional döndürüyorsa, sonuç Optional<Optional<T>> olur; bu kullanışsızdır. flatMap bu iç içe yapayı düzleştirir.
Örnek: opt.flatMap(this::lookup). Burada lookup yöntemi Optional<String> döndürsün. map kullansaydın sonuç Optional<Optional<String>> olurdu; flatMap ise tek bir Optional<String> verir. Bu, ikinci bir sorgunun başarısız olabileceği durumlar için idealdir.
Uygulama map ile dizgi uzunluğunu bul
Optional.of("Ayşe") ile bir Optional<String> oluştur. map(String::length) ile uzunluğu Optional<Integer> olarak al. orElse(0) ile boş durumda sıfır ver. Sonucu System.out.println ile yazdır.
Başlangıç kodu
import java.util.Optional;
// "Ayşe" dizgisini Optional.of ile sarmala
// map ile uzunluğa çevir, orElse ile sıfır ver
// Sonucu yazdırÖrnek çözüm
import java.util.Optional;
public class MapOptional {
public static void main(String[] args) {
Optional<String> name = Optional.of("Ayşe");
int length = name.map(String::length).orElse(0);
System.out.println(length);
}
}Beklenen çıktı
4
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Optional.map(String::length) ne döndürür?
- Optional<Integer> Doğru cevap
- void
- Integer
- Stream<Integer>
Açıklama: map sonucu yine bir Optional içinde döner.
2 map çağrısını tamamla
Optional<Integer> len = opt.____(String::length);
Optional<Integer> len = opt.map(String::length);
Açıklama: map işlevi uygular ve sonucu sarmalar.
3 map ve flatMap farkını eşleştir
| Kavram | Anlamı |
|---|---|
map |
Optional<R> döndürür |
flatMap |
İç içeği düzleştirir |
Function<T,R> |
map'in işlevi |
Function<T,Optional<R>> |
flatMap'in işlevi |