0Pricing
Kotlin Academy · Pelajaran

Operasi Malas

Hindari daftar perantara

Operasi Malas adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Operasi Malas

Kekuatan urutan berasal dari operasi malas. Operasi perantara membangun alur tanpa menjalankannya, dan hanya operasi terminal yang menarik elemen melewatinya. Dengan demikian, daftar perantara dapat dihindari.

Tanpa Daftar Perantara

Dengan koleksi, setiap map dan filter mengalokasikan daftar baru. Dengan urutan, elemen mengalir melalui semua langkah tanpa membuat daftar sementara tersebut.

fun main() {
    val result = (1..6).asSequence()
        .map { it * it }
        .filter { it % 2 == 0 }
        .toList()
    println(result)
}

Mengamati Kemalasan

Tanpa operasi terminal, tidak ada fungsi lambda yang dijalankan. Alur tersebut hanyalah resep sampai diproses.

fun main() {
    val pipeline = (1..3).asSequence()
        .map { println("map $it"); it }
    println("Built pipeline, nothing ran")
    pipeline.toList()
}

take Membatasi Pemrosesan

take(n) adalah operasi perantara yang malas. Jika digabungkan dengan pembangkit tak terbatas, operasi ini berhenti setelah menghasilkan n elemen.

fun main() {
    val firstThree = generateSequence(1) { it + 1 }
        .map { it * 10 }
        .take(3)
        .toList()
    println(firstThree)
}

first Menghentikan Lebih Awal

Operasi terminal seperti first berhenti segera setelah mendapatkan yang dibutuhkan, sehingga elemen lainnya dilewati sepenuhnya.

fun main() {
    val result = (1..1000).asSequence()
        .map { println("processing $it"); it }
        .first { it > 3 }
    println("Found $result")
}

Pemrosesan Per Elemen

Dalam sebuah urutan, elemen 1 melewati pemetaan lalu penyaringan, kemudian elemen 2, dan seterusnya. Urutan ini memungkinkan penghentian lebih awal dan mencegah semua hasil disimpan sementara.

fun main() {
    listOf(1, 2, 3, 4).asSequence()
        .filter { println("filter $it"); it % 2 == 0 }
        .map { println("map $it"); it * 10 }
        .toList()
}

takeWhile dan dropWhile

takeWhile menghasilkan elemen sampai predikat gagal; dropWhile melewati elemen-elemen awal selama predikat terpenuhi. Keduanya bersifat malas.

fun main() {
    val nums = generateSequence(1) { it + 1 }
    println(nums.takeWhile { it < 5 }.toList())
}

Menghindari Perhitungan Sia-sia

Karena tidak ada yang dijalankan sampai diproses dan pemrosesan dapat berhenti lebih awal, transformasi yang mahal hanya diterapkan pada elemen yang benar-benar mencapai operasi terminal.

fun main() {
    val result = (1..100).asSequence()
        .map { it * 2 }
        .filter { it > 10 }
        .take(2)
        .toList()
    println(result)
}

Menggunakan Kembali Urutan

Sebagian besar urutan dapat diiterasi beberapa kali dan menjalankan kembali alurnya setiap kali. Namun, urutan dari sumber sekali pakai, seperti pengulang, hanya dapat diproses satu kali. Perhatikan sumbernya.

fun main() {
    val seq = sequenceOf(1, 2, 3).map { it * 2 }
    println(seq.toList())
    println(seq.sum())
}

Operasi Berstatus vs Tanpa Status

Sebagian besar operasi tidak berstatus, yaitu memproses satu elemen pada satu waktu. Beberapa operasi, seperti sorted atau distinct, memiliki status dan harus menyimpan sementara atau memindai semua elemen, sehingga manfaat kemalasannya berkurang.

fun main() {
    val result = sequenceOf(3, 1, 2, 1).distinct().sorted().toList()
    println(result)
}

Manfaat Evaluasi Malas

Operasi malas menghemat memori dengan melewati daftar perantara dan menghemat waktu dengan menghentikan pemrosesan lebih awal. Semakin besar datanya dan semakin selektif operasi terminalnya, semakin besar manfaatnya.

Pemeriksaan Singkat

Kapan fungsi lambda dalam rangkaian urutan benar-benar dijalankan?

Ringkasan

Operasi malas membangun alur yang hanya berjalan ketika diproses oleh operasi terminal, sehingga menghindari daftar perantara dan memungkinkan penghentian lebih awal dengan first, take, dan takeWhile. Waspadai operasi yang memiliki status seperti sorted. Selanjutnya, Anda akan menentukan kapan urutan lebih unggul daripada koleksi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Operasi Malas” gratis?

Ya — teks lengkap “Operasi Malas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Operasi Malas”?

Hindari daftar perantara Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Operasi Malas” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Menggunakan Sequence
  2. Membuat Sequence
  3. Operasi Malas
  4. Sequence versus Koleksi
← Kembali ke Kotlin Academy