Sequence
- Kotlin kursu
- İleri seviye
- Ders 51/83
- 5 dk
Sequence ile tembel koleksiyon öğrenirsin.
Sequence ile tembel akış
Sequence, tembel (lazy) bir koleksiyon akışıdır. İşlemler, son bir terminal operasyon çağrılana dek uygulanmaz. Bu, büyük verilerde bellek tasarrufu sağlar.
Örnek: (1..10).asSequence().map { it * 2 }.filter { it > 10 }.toList(). Burada map ve filter tembeldir; toList çağrılınca gerçekleşir. Sequence, uzun zincirlerde ara koleksiyon oluşturmaz; bu yüzden verimlidir.
asSequence ve terminal operasyon
asSequence() bir koleksiyonu Sequence'e çevirir. Terminal operasyonlar (toList, sum, count) çağrılana dek hiçbir işlem gerçekleşmez.
Örnek: val sum = (1..5).asSequence().map { it * 10 }.sum(). map tembeldir; sum çağrılınca tüm zincir yürütülür ve sonuç 150 olur. Bu kalıp, özellikle büyük aralıklarda verimlidir; ara liste oluşturmaz.
Uygulama Sequence ile çift sayı karesi
main içinde (1..5).asSequence().map { it * it }.filter { it % 2 == 0 }.toList() sonucunu bir değişkene ata ve println ile yazdır.
Başlangıç kodu
// main'de 1..5 aralığını Sequence'e çevir
// map ile karesini al, filter ile çift olanları süz, toList ile yazdırÖrnek çözüm
fun main() {
val result = (1..5).asSequence()
.map { it * it }
.filter { it % 2 == 0 }
.toList()
println(result)
}Beklenen çıktı
[4, 16]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sequence parçalarını eşle
| Kavram | Anlamı |
|---|---|
asSequence() |
Sequence'e çevirme |
map { } |
Tembel dönüşüm |
filter { } |
Tembel süzme |
toList() |
Terminal operasyon |
2 Aşağıdakilerden hangisi bir Sequence terminal operasyonudur?
- toList Doğru cevap
- map
- asSequence
- filter
Açıklama: toList bir terminal operasyonudur; zinciri yürütür.
3 asSequence çağrısını tamamla
val sum = (1..5).____().map { it * 10 }.sum()
val sum = (1..5).asSequence().map { it * 10 }.sum()
Açıklama: asSequence koleksiyonu Sequence'e çevirir.