0Pricing
Kotlin Academy · Pelajaran

Data Class dalam Koleksi dan sebagai Kunci Map

Gunakan data class dalam set dan map dengan memanfaatkan kesetaraan struktural.

Data Class dalam Koleksi dan sebagai Kunci Map adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Kelas Data sebagai Objek Nilai

Karena kelas data melakukan override equals dan hashCode secara struktural, kelas tersebut berfungsi sempurna di dalam set dan sebagai kunci peta—berbeda dari kelas biasa.

Kelas Biasa: Kunci Peta yang Buruk

Kelas biasa menggunakan kesetaraan referensi secara default. Dua objek yang tampak sama merupakan kunci peta yang berbeda.
class Key(val id: Int)  // no equals/hashCode
val map = mutableMapOf<Key, String>()
val k1 = Key(1)
val k2 = Key(1)  // same id, different object
map[k1] = "value"
println(map[k2])  // null! k2 != k1 by reference

Kelas Data: Kunci Peta yang Benar

Kelas data menggunakan kesetaraan struktural. Dua objek dengan properti yang sama dianggap setara.
data class Key(val id: Int)
val map = mutableMapOf<Key, String>()
val k1 = Key(1)
val k2 = Key(1)
map[k1] = "value"
println(map[k2])  // "value"! Equal by value

Kelas Data dalam Set

Set menggunakan equals dan hashCode untuk menghapus duplikat. Kelas data menghapus duplikat dengan benar.
data class Tag(val name: String)
val tags = mutableSetOf<Tag>()
tags.add(Tag("kotlin"))
tags.add(Tag("kotlin"))  // duplicate
tags.add(Tag("java"))
println(tags.size)  // 2 (not 3)

GroupBy dengan Kelas Data

Kelompokkan koleksi berdasarkan kunci kelas data.
data class Category(val name: String, val parent: String)
val items = listOf(
    "List" to Category("Collections", "stdlib"),
    "Map" to Category("Collections", "stdlib"),
    "Flow" to Category("Coroutines", "kotlinx")
)
val grouped = items.groupBy { it.second }
println(grouped.keys.size)  // 2

Menghitung Kemunculan dengan Map

Hitung kemunculan data terstruktur menggunakan kelas data sebagai kunci map.
data class Pair2(val x: Int, val y: Int)
val points = listOf(Pair2(1,2), Pair2(1,2), Pair2(3,4))
val counts = points.groupingBy { it }.eachCount()
println(counts)  // {Pair2(x=1, y=2)=2, Pair2(x=3, y=4)=1}

Kelas Data Bertingkat

Kelas data dapat berisi kelas data lain. Equals dan hashCode bersifat mendalam untuk kelas data bertingkat.
data class Address(val city: String, val country: String)
data class Person(val name: String, val address: Address)
val p1 = Person("Alice", Address("Berlin", "DE"))
val p2 = Person("Alice", Address("Berlin", "DE"))
println(p1 == p2)  // true

sortedBy dengan Kelas Data

Urutkan daftar instance kelas data berdasarkan sebuah properti.
data class Student(val name: String, val grade: Double)
val students = listOf(
    Student("Bob", 3.2),
    Student("Alice", 3.8),
    Student("Charlie", 2.9)
)
println(students.sortedBy { it.grade })

Kelas Data dan Caching

Gunakan kelas data sebagai kunci cache dalam HashMap ketika kunci cache bersifat gabungan.
data class CacheKey(val userId: Long, val resourceType: String)
val cache = HashMap<CacheKey, ByteArray>()
val key = CacheKey(42, "avatar")
cache[key] = byteArrayOf(1, 2, 3)
println(cache[CacheKey(42, "avatar")] != null)  // true

distinct pada Kelas Data

distinct() pada daftar kelas data menggunakan equals miliknya untuk menghapus duplikat.
data class Event(val type: String, val ts: Long)
val events = listOf(
    Event("click", 1000),
    Event("click", 1000),  // duplicate
    Event("scroll", 2000)
)
println(events.distinct().size)  // 2

Kunci Immutable Lebih Aman

Selalu gunakan kelas data dengan properti val sebagai kunci map/set. Mengubah kunci setelah penyisipan akan merusak struktur data.
data class ImmutableKey(val id: Int)  // val properties only
// DON'T: data class MutableKey(var id: Int)  // changing id breaks map!

Pemeriksaan Cepat

Mengapa kelas data berfungsi dengan benar sebagai kunci Map, sedangkan kelas biasa sering kali tidak?

Ringkasan

Kelas data dapat digunakan sebagai kunci Map dan elemen Set karena memiliki equals/hashCode struktural yang benar. Gunakan properti val agar kunci tetap immutable. Manfaatkan groupBy, distinct, dan sortedBy dengan kelas data untuk membuat query yang kuat.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Data Class dalam Koleksi dan sebagai Kunci Map” gratis?

Ya — teks lengkap “Data Class dalam Koleksi dan sebagai Kunci Map” 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 “Data Class dalam Koleksi dan sebagai Kunci Map”?

Gunakan data class dalam set dan map dengan memanfaatkan kesetaraan struktural. 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 4 dari 4.

Berapa lama pelajaran “Data Class dalam Koleksi dan sebagai Kunci Map” 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. Dasar Data Class: Metode yang Dibuat Otomatis
  2. Menyalin dengan copy() dan Penggantian Sebagian
  3. Deklarasi Destrukturisasi dengan componentN
  4. Data Class dalam Koleksi dan sebagai Kunci Map
← Kembali ke Kotlin Academy