CodeBlanks Logo Icon CodeBlanks

map ve flatMap

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

Main.java
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

Main.java
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

Soru
Optional<Integer> len = opt.____(String::length);
Cevap
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

İleri seviye bölümündeki tüm dersler