Hash Map / Object — Struktur Data

Hash Map (di JavaScript: Object dan Map) menyimpan data sebagai pasangan key-value dengan pencarian super cepat. Bagaimana cara kerjanya? Key diproses oleh…

Hash Map (di JavaScript: Object dan Map) menyimpan data sebagai pasangan key-value dengan pencarian super cepat.

Bagaimana cara kerjanya?

  1. Key diproses oleh hash function → menghasilkan angka (index)
  2. Value disimpan di index tersebut dalam array internal
  3. Saat mencari, hash function mengarahkan langsung ke lokasi — O(1)

Operasi dan kompleksitas:

Operasi Average Worst Case
Get (pencarian) O(1) O(n)
Set (penyimpanan) O(1) O(n)
Delete O(1) O(n)
Has (cek ada) O(1) O(n)

Apa itu collision? Collision terjadi saat dua key berbeda menghasilkan hash index yang sama — karena ruang hash (array internal) lebih kecil daripada kemungkinan key. Untuk mengatasinya, hash map memakai chaining (tiap bucket menyimpan linked list berisi semua entry yang bertabrakan) atau open addressing (cari bucket kosong berikutnya). Strategi ini menjaga performa tetap dekat O(1) di kondisi normal, tapi jika terlalu banyak collision — atau hash function buruk — performa bisa turun ke worst case O(n).

// JavaScript Map — hash map bawaan
const map = new Map();

map.set("nama", "Budi");
map.set("umur", 25);
map.set("kota", "Jakarta");

map.get("nama");    // "Budi" — O(1)
map.has("umur");    // true — O(1)
map.delete("kota"); // hapus — O(1)
map.size;           // 2

// Iterasi
for (const [key, value] of map) {
  console.log(`${key}: ${value}`);
}

Object vs Map di JavaScript:

Fitur Object Map
Key type String/Symbol Apa saja
Urutan Tidak dijamin Sesuai insertion
Performa Baik Lebih baik untuk banyak operasi
Size Manual count .size property

Kegunaan nyata:

🎭 Analogi sehari-hari: Loker mall dengan barcode di tiket parkir. Scan barcode (key) → langsung tau loker mana (value). Gak perlu cek satu per satu loker. Walaupun ada 1000 loker, scan tetap instan — itu O(1). Kalau dua barcode kebetulan menghasilkan nomor loker yang sama? Petugas kasih loker sebelahnya yang kosong (collision handling).

💡 Mengapa Hash Map = "trik tercepat" di interview coding? Banyak masalah O(n²) (cari pasangan, cek duplikat, count) jadi O(n) hanya dengan Hash Map. Two Sum problem? Hash Map = O(n). Brute force = O(n²). Hash Map sering jadi shortcut performa di banyak algoritma.

⚠️ Jebakan umum:

🎯 Object vs Map kapan?

🧪 Tebakan cepat: Two Sum — cari 2 angka di array yang jumlahnya = target. Brute force O(n²). Dengan Hash Map? Loop sekali, simpan target - num yang dibutuhkan, cek apakah sudah pernah lihat = O(n).

TL;DR: Hash Map = key→value lookup O(1). Trik tercepat untuk count, dedup, lookup, dan banyak algoritma interview. Pakai Map di JS kalau butuh non-string keys.

Yang akan kamu pelajari