CodeBlanks Logo Icon CodeBlanks

flatMap ve flatten

flatMap ve flatten ile düzleştirme öğrenirsin.

flatMap ve flatten

flatMap, her öğeyi bir listeye dönüştürür ve tüm listeleri tek bir liste olarak birleştirir. flatten ise iç içe listeyi tek seviyeye indirir.

Örnek: listOf("ab", "cd").flatMap { it.toList() } ifadesi [a, b, c, d] döndürür. listOf(listOf(1, 2), listOf(3, 4)).flatten() ise [1, 2, 3, 4] verir. flatMap = map + flatten. Bu kalıp, iç içe yapıları düzleştirmek için kullanılır.

flatten ile iç içe liste

flatten, iç içe geçmiş bir listeyi tek seviyeye indirir. Dönüşüm gerekmiyorsa flatten, flatMap'ten daha okunaklıdır.

Örnek: listOf(listOf(1, 2), listOf(3, 4), listOf(5)).flatten(). Bu, [1, 2, 3, 4, 5] döndürür. flatten yalnızca bir seviye indirir; daha derin iç içe yapılar için flatten birden çok kez çağrılır. Bu kalıp, gruplandırılmış veriyi tek listeye açmak için kullanılır.

Uygulama flatMap ile kelimeleri harflere ayır

main içinde listOf("elma", "armut").flatMap { it.toList() } sonucunu bir değişkene ata ve println ile yazdır.

Başlangıç kodu

Main.kt
// main'de iki kelimeyi flatMap ile harflere ayır
// sonucu println ile yazdır

Örnek çözüm

Main.kt
fun main() {
    val chars = listOf("elma", "armut").flatMap { it.toList() }
    println(chars)
}

Beklenen çıktı

[e, l, m, a, a, r, m, u, t]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 flatMap çağrısını tamamla

Soru
val chars = listOf("ab", "cd").____ { it.toList() }
Cevap
val chars = listOf("ab", "cd").flatMap { it.toList() }

Açıklama: flatMap her öğeyi listeye çevirip birleştirir.

2 flatMap/flatten parçalarını eşle

Kavram Anlamı
flatMap { } Dönüşüm ve birleştirme
flatten() Tek seviye indirme
it.toList() Listeye çevirme
[1, 2, 3, 4] Sonuç

3 listOf(listOf(1, 2), listOf(3, 4)).flatten() çağrısı ne döndürür?

  • [[1, 2], [3, 4]]
  • [1, 2, 3, 4] Doğru cevap
  • [1, 2]
  • [3, 4]

Açıklama: flatten iç içe listeyi tek seviyeye indirir.

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