CodeBlanks Logo Icon CodeBlanks

Sequence

Sequence ile tembel hesap optimizasyonu öğrenirsin.

Sequence nedir?

Sequence, Kotlin'de tembel (lazy) hesaplanan bir akıştır. Her adımı yalnızca sonuca ihtiyaç duyulunca çalışır; ara koleksiyon yaratmaz.

Örnek: (1..10).asSequence().map { it * 2 }.filter { it > 5 }.toList(). List ile her adım yeni bir liste yaratır; Sequence ise tek geçişte hesaplar. Bu, büyük verilerde hem allocation'ı hem zamanı düşürür. Bu dersteki seqInfo modeli konsepti gösterir.

Sequence ve List farkı

List, her adımda yeni bir koleksiyon yaratır (istekli). Sequence ise tek geçişte, yalnızca gereken kadar elemanı işler (tembel).

Örneğin (1..3).asSequence().map { it * 2 }.joinToString() sonucu "2, 4, 6" olur; ara liste oluşmaz. Küçük veride fark azdır; milyon elemanda Sequence hem bellek hem zaman kazandırır. Sonuca ulaşmak için bir terminal operasyon (toList, joinToString) gerekir.

Uygulama seqInfo yaz

fun seqInfo(): String tanımla. Gövde (1..3).asSequence().map { it * 2 }.joinToString() döndürsün. main içinde println(seqInfo()) yaz.

Başlangıç kodu

Main.kt
// seqInfo fonksiyonunu ekle

fun main() {
    // seqInfo sonucunu yazdır
}

Örnek çözüm

Main.kt
fun seqInfo(): String = (1..3).asSequence().map { it * 2 }.joinToString()
fun main() {
    println(seqInfo())
}

Beklenen çıktı

2, 4, 6

Soru ve cevaplar

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

1 Sequence hangi hesaplamayı yapar?

Main.kt
A Sequence does deferred computation.
  • Hemen
  • Tembel Doğru cevap
  • Asenkron
  • Paralel

Açıklama: Sequence tembel (lazy) hesaplanır.

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

Soru
val s = (1..10).____()
Cevap
val s = (1..10).asSequence()

Açıklama: asSequence() bir aralığı tembel akışa çevirir.

3 Sequence parçalarını eşle

Kavram Anlamı
Sequence Tembel akış
asSequence Dönüştürücü
lazy Ertelenmiş
joinToString Terminal operasyon

Uzman bölümündeki tüm dersler