CodeBlanks Logo Icon CodeBlanks

Sequence

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.kt
// 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

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

Soru
val sum = (1..5).____().map { it * 10 }.sum()
Cevap
val sum = (1..5).asSequence().map { it * 10 }.sum()

Açıklama: asSequence koleksiyonu Sequence'e çevirir.

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