assocuate ve flatMap
- Kotlin kursu
- Orta seviye
- Ders 68/116
- 5 dk
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
fun main() {
val words = listOf("elma", "armut", "kiraz")
// associate ile Map üret, flatMap ile karakterleri düzleştir ve yazdır
}Örnek çözüm
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
words.____ { it to it.length }
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.