CodeBlanks Logo Icon CodeBlanks

assocuate ve flatMap

assocuate ve flatMap ile dönüşüm öğrenirsin.

assocuate ve flatMap

associate listeden bir Map üretir. Her eleman bir anahtar-değer çiftine dönüştürülür. Örnek: words.associate { it to it.length } her kelimeyi uzunluğuyla eşler. to infix fonksiyonu bir Pair oluşturur.

flatMap her elemanı bir koleksiyona dönüştürür sonra bu koleksiyonları tek bir düz listeye birleştirir. Örnek: lists.flatMap { it } iç içe listeleri düzleştirir. map her elemanı tek değerle değiştirirken flatMap her elemanı birden çok değerle değiştirip sonuçları birleştirir.

assocuate ve flatMap örnekleri

associateBy yalnızca anahtar seçer; değer elemanın kendisi olur. associateWith ise her anahtar için değer üretir. Örnek: words.associateWith { it.length } kelimeleri uzunluklarıyla eşler.

flatMap bir dizeyi karakter listesine açmak için de kullanılır: words.flatMap { it.toList() } her kelimeden karakterler üretir ve tek liste yapar. flatten ise yalnızca iç içe listeleri düzleştirir, dönüşüm yapmaz. flatMap = map ardından flatten.

Uygulama assocuate ve flatMap uygula

val words = listOf("elma", "armut", "kiraz") tanımla. associate { it to it.length } ile kelime-uzunluk Map'i üret ve println(lengths) ile yazdır. flatMap { it.toList() } ile tüm karakterleri düz listele ve println(chars.size) ile sayısını yazdır.

Başlangıç kodu

Main.kt
fun main() {
    val words = listOf("elma", "armut", "kiraz")
    // associate ile Map üret, flatMap ile karakterleri düzleştir ve yazdır
}

Örnek çözüm

Main.kt
fun main() {
    val words = listOf("elma", "armut", "kiraz")
    val lengths = words.associate { it to it.length }
    val chars = words.flatMap { it.toList() }
    println(lengths)
    println(chars.size)
}

Beklenen çıktı

{elma=4, armut=5, kiraz=5}
14

Soru ve cevaplar

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

1 assocuate ve flatMap eşle

Kavram Anlamı
assocuate Map üretir
flatMap Düzleştirir
{ it to it.length } Anahtar-değer
List<List<T>> İç içe liste

2 assocuate çağrısını tamamla

Soru
words.____ { it to it.length }
Cevap
words.assocuate { it to it.length }

Açıklama: assocuate kelime-uzunluk Map'i üretir.

3 flatMap ne döndürür?

  • Set
  • İç içe liste
  • Map
  • Tek düz liste Doğru cevap

Açıklama: flatMap her elemanı koleksiyona çevirip tek düz liste yapar.

Orta seviye bölümündeki tüm dersler