Struktur data adalah cara menyimpan dan menyusun data di dalam program, supaya data itu gampang dan cepat diambil, ditambah, atau dihapus. Kamu sebenarnya sudah kenal dua: array dan object. Mirip barang di rumah: buku dijajarkan di rak, piring ditumpuk, dan kaos kaki disimpan di laci berlabel, karena tiap barang diambil dengan cara yang beda.
🧪 Tebakan cepat: array
buahberisi empat buah. Buat mengambil buah ketiga, apakah komputer harus melewati buah pertama dan kedua dulu? Tebak dulu, jawabannya ada di bagian "Satu data, dua cara simpan".
Satu data, dua cara simpan
// Array: berjajar, diambil lewat nomor urut
const buah = ["Apel", "Pisang", "Jeruk", "Anggur"];
console.log(buah[1]); // Pisang
// Map: pasangan kunci dan nilai, diambil lewat nama
const stok = new Map([
["apel", 5],
["pisang", 12],
["jeruk", 8],
]);
console.log(stok.get("apel")); // 5
buahadalah array. Isinya berjajar, dan tiap isi punya nomor urut yang disebut index, mulai dari 0. Jadi"Apel"ada di index 0 dan"Pisang"di index 1.buah[1]langsung loncat ke index 1 tanpa melewati"Apel". Buah ketiga ada dibuah[2], dan komputer juga langsung loncat ke sana. Itu jawaban tebakannya: gak perlu lewat yang lain.stokadalah Map, struktur yang menyimpan pasangan kunci dan nilai (key dan value), mirip object. Kunci"apel"punya nilai5.stok.get("apel")mengambil nilai lewat kuncinya. Kamu gak perlu tahu posisinya, cukup namanya.
Dua-duanya menyimpan data, tapi cara ambilnya beda. Array pas kalau kamu sering mengambil berdasarkan urutan. Map pas kalau kamu sering mencari berdasarkan nama.
Kenapa pilihannya penting
Misalnya kamu mau tahu ada jeruk atau gak. Di array, cara paling sederhana adalah mengecek isinya satu per satu. Di Map, kamu langsung tanya kuncinya:
| Langkah | Array buah: cari "Jeruk" |
Map stok: get("jeruk") |
|---|---|---|
| 1 | cek "Apel": bukan |
langsung ke kunci "jeruk": 8 |
| 2 | cek "Pisang": bukan |
sudah selesai |
| 3 | cek "Jeruk": ketemu |
Dengan empat isi, bedanya cuma dua langkah. Dengan sejuta isi, array bisa butuh sejuta pengecekan, sedangkan Map biasanya tetap langsung ketemu. Jadi struktur data menentukan dua hal: berapa langkah (waktu) yang dibutuhkan tiap operasi, dan berapa banyak memori yang dipakai. Map yang cepat mencari itu juga makan memori lebih banyak daripada array berisi data yang sama.
Struktur data yang akan kamu pelajari
| Struktur | Gambarannya | Cocok untuk |
|---|---|---|
| Array | buku berjajar di rak | ambil lewat nomor urut |
| Stack | tumpukan piring: yang terakhir ditaruh, pertama diambil | undo, tombol Back |
| Queue | antrean: yang datang duluan, dilayani duluan | antrean tugas |
| Linked list | rantai: tiap isi menunjuk ke isi berikutnya | sisip dan hapus di depan |
| Hash map | laci berlabel | cari lewat nama |
| Tree | folder di dalam folder | data bertingkat |
| Graph | peta: kota dan jalan | jaringan, rute, pertemanan |
Array, stack, queue, dan linked list disebut struktur linear: isinya berbaris, satu di belakang yang lain. Tree dan graph non-linear: satu isi bisa terhubung ke banyak isi lain. Hash map diakses lewat kunci, bukan lewat urutan.
⚠️ Jebakan yang sering ketemu
- Memilih yang kelihatan canggih. Kalau kamu cuma menambah dan mengambil di ujung, array biasa sudah cukup. Tree tanpa alasan cuma bikin kode susah dibaca.
- Menilai dari data kecil. Dengan sepuluh isi, semua struktur terasa cepat. Bedanya baru kerasa di ribuan atau jutaan isi.
- Menghafal nama. Gak ada struktur yang paling bagus. Tiap struktur cepat untuk satu hal dan lambat untuk hal lain, jadi yang perlu kamu pahami adalah kelebihan dan kekurangannya (trade-off).
🎯 Cara memilih
Tanya empat hal ini dulu:
- Operasi apa yang paling sering? Ambil lewat urutan, cari lewat nama, tambah, atau hapus.
- Urutan penting gak? Antrean butuh urutan datang, laci berlabel gak.
- Boleh ada isi kembar? Array boleh. Nanti ada Set, yang menolak isi kembar.
- Seberapa banyak datanya? Seratus isi dan sejuta isi bisa butuh pilihan yang beda.
TL;DR: Struktur data adalah cara menyimpan dan menyusun data supaya cepat diambil, ditambah, atau dihapus. Array menyimpan isi berjajar dan mengambilnya lewat index, misalnya buah[1], langsung tanpa melewati isi lain. Map menyimpan pasangan kunci dan nilai dan mengambilnya lewat nama, misalnya stok.get("apel"). Pilihan struktur menentukan berapa langkah dan berapa memori yang dipakai tiap operasi, dan bedanya makin besar kalau datanya makin banyak. Array, stack, queue, dan linked list itu linear, sedangkan tree dan graph non-linear.