Lewati ke isi

๐Ÿ—‚๏ธ HashMap dalam Java

HashMap adalah bagian dari Java Collection Framework (JCF) yang digunakan untuk menyimpan data dalam bentuk pasangan kunci-nilai (key-value). Setiap kunci bersifat unik dan dipetakan ke satu nilai, memungkinkan akses data yang cepat berdasarkan kunci. HashMap sangat cocok untuk kasus seperti konfigurasi, pencarian (lookup), atau penyimpanan data asosiatif.

Contoh analogi: - Kunci: "NIM" โ†’ Nilai: "12345" - Kunci: "Nama" โ†’ Nilai: "Marno" - Kunci: "Role" โ†’ Nilai: "Pekerja"

๐Ÿงฑ Deklarasi dan Inisialisasi

Untuk menggunakan HashMap, impor java.util.HashMap dan deklarasikan instance dengan tipe kunci dan nilai.

import java.util.HashMap;

public class HashMapDemo {
    public static void main(String[] args) {
        HashMap<String, String> data = new HashMap<>();
        data.put("id", "001");
        data.put("nama", "Marno");
        data.put("role", "Mandor");

        System.out.println("Nama: " + data.get("nama"));
    }
}

๐Ÿ–จ๏ธ Output:

Nama: Marno

๐Ÿ“Œ Catatan: HashMap hanya dapat menyimpan objek, sehingga tipe primitif (seperti int) harus menggunakan wrapper class (seperti Integer).

๐Ÿ”ง Operasi Dasar HashMap

HashMap menyediakan method untuk mengelola pasangan kunci-nilai:

Method Keterangan
put(key, value) Menambahkan atau memperbarui pasangan kunci-nilai.
get(key) Mengambil nilai berdasarkan kunci.
remove(key) Menghapus pasangan berdasarkan kunci.
containsKey(key) Memeriksa apakah kunci ada.
containsValue(value) Memeriksa apakah nilai ada.
size() Mengembalikan jumlah pasangan kunci-nilai.
clear() Menghapus semua pasangan kunci-nilai.

Contoh Operasi:

import java.util.HashMap;

public class HashMapOperationsDemo {
    public static void main(String[] args) {
        HashMap<String, String> user = new HashMap<>();
        user.put("id", "001");
        user.put("nama", "Marno");
        user.put("role", "Mandor");

        // Mengambil nilai
        System.out.println("Role: " + user.get("role"));

        // Memeriksa kunci
        System.out.println("Ada kunci 'id'? " + user.containsKey("id"));

        // Menghapus pasangan
        user.remove("id");
        System.out.println("Setelah menghapus 'id': " + user);

        // Mengecek ukuran
        System.out.println("Jumlah pasangan: " + user.size());
    }
}

๐Ÿ–จ๏ธ Output:

Role: Mandor
Ada kunci 'id'? true
Setelah menghapus 'id': {nama=Marno, role=Mandor}
Jumlah pasangan: 2

๐Ÿ” Iterasi HashMap

HashMap dapat diiterasi menggunakan dua pendekatan utama: keySet() untuk mengakses kunci atau entrySet() untuk mengakses pasangan kunci-nilai secara langsung.

1. Iterasi dengan keySet():

import java.util.HashMap;

public class KeySetDemo {
    public static void main(String[] args) {
        HashMap<String, String> user = new HashMap<>();
        user.put("id", "001");
        user.put("nama", "Marno");
        user.put("role", "Mandor");

        for (String key : user.keySet()) {
            System.out.printf("%s: %s%n", key, user.get(key));
        }
    }
}

๐Ÿ–จ๏ธ Output:

id: 001
nama: Marno
role: Mandor

2. Iterasi dengan entrySet():

import java.util.HashMap;
import java.util.Map;

public class EntrySetDemo {
    public static void main(String[] args) {
        HashMap<String, String> user = new HashMap<>();
        user.put("id", "001");
        user.put("nama", "Marno");
        user.put("role", "Mandor");

        for (Map.Entry<String, String> entry : user.entrySet()) {
            System.out.printf("%s => %s%n", entry.getKey(), entry.getValue());
        }
    }
}

๐Ÿ–จ๏ธ Output:

id => 001
nama => Marno
role => Mandor

๐Ÿ’ก Tips: Gunakan entrySet() untuk iterasi yang lebih efisien, karena tidak perlu memanggil get(key) berulang kali.

๐Ÿงช Studi Kasus: Rekap Gaji Pekerja

Berikut adalah contoh penggunaan HashMap untuk menyimpan dan menampilkan data gaji pekerja berdasarkan nama sebagai kunci.

import java.util.HashMap;

public class GajiDemo {
    public static void main(String[] args) {
        HashMap<String, Double> gaji = new HashMap<>();
        gaji.put("Ali", 500.0);
        gaji.put("Budi", 450.0);
        gaji.put("Cici", 470.0);

        for (Map.Entry<String, Double> entry : gaji.entrySet()) {
            System.out.printf("%s menerima RM %.2f%n", entry.getKey(), entry.getValue());
        }

        // Menambahkan pekerja baru
        gaji.put("Dedi", 480.0);
        System.out.println("Setelah menambah Dedi: " + gaji);
    }
}

๐Ÿ–จ๏ธ Output:

Ali menerima RM 500.00
Budi menerima RM 450.00
Cici menerima RM 470.00
Setelah menambah Dedi: {Ali=500.0, Budi=450.0, Cici=470.0, Dedi=480.0}

โš–๏ธ HashMap vs. ArrayList

Fitur HashMap ArrayList
Akses Data Berdasarkan kunci (key) Berdasarkan indeks
Struktur Tidak berurutan (unordered) Berurutan (ordered)
Cocok Untuk Pencarian cepat, data asosiatif Koleksi data berurutan
Duplikasi Kunci harus unik, nilai bisa duplikat Elemen bisa duplikat

โš ๏ธ Catatan Penting

  • Kunci Unik: Setiap kunci dalam HashMap harus unik; jika kunci ditambahkan ulang, nilai lama akan ditimpa.
  • Urutan Tidak Terjamin: HashMap tidak menjaga urutan input. Gunakan LinkedHashMap untuk mempertahankan urutan.
  • Null Values: HashMap mengizinkan satu kunci null dan beberapa nilai null.
  • Performa: HashMap menawarkan pencarian cepat (O(1) rata-rata) berkat struktur hash table-nya.
  • Thread Safety: HashMap tidak thread-safe. Gunakan ConcurrentHashMap untuk aplikasi multi-threaded.

๐Ÿ“Œ Kesimpulan

HashMap adalah struktur data yang kuat untuk mengelola pasangan kunci-nilai:

Konsep Penjelasan
HashMap Struktur data untuk menyimpan pasangan kunci-nilai.
Keunggulan Akses cepat, fleksibel, cocok untuk lookup.
Penggunaan Konfigurasi, data pengguna, cache, atau mapping.

๐ŸŽฏ Tujuan Utama: HashMap memungkinkan pengelolaan data asosiatif dengan efisiensi tinggi untuk pencarian dan manipulasi.

๐Ÿ“š Langkah Selanjutnya

Pelajari lebih lanjut tentang File I/O (Baca & Tulis File) untuk memahami cara membaca dan menulis data ke file di Java.

โฌ…๏ธ Kembali: Array dan ArrayList