Kelas IdentityHashMap - Java

Pengenalan

Halo para pengembang Java masa depan! hari ini, kita akan melakukan perjalanan yang menarik ke dunia kelas IdentityHashMap di Java. Saya tahu apa yang mungkin Anda pikirkan: "Kelas peta lain? Kita baru saja belajar tentang HashMap, kan?" Benar, tapi percayalah, IdentityHashMap memiliki cita rasa khusus yang membuatnya spesial. Mari kita meluncurkan!

Java - The IdentityHashMap Class

Deklarasi Kelas

Pertama-tama, mari kita lihat bagaimana cara mendeklarasikan sebuah IdentityHashMap:

import java.util.IdentityHashMap;

IdentityHashMap<String, Integer> petaSaya = new IdentityHashMap<>();

Baris kode ini membuat sebuah IdentityHashMap baru yang akan menyimpan kunci String dan nilai Integer. Tetapi apa yang membuatnya berbeda dari HashMap reguler? Well, itu saat hal-hal menjadi menarik!

Konstruktor Kelas

IdentityHashMap datang dengan empat konstruktor. Mari kita pelajari:

  1. Konstruktor default:

    IdentityHashMap<String, Integer> peta1 = new IdentityHashMap<>();

    Ini membuat sebuah IdentityHashMap kosong dengan kapasitas default 21.

  2. Konstruktor dengan kapasitas awal:

    IdentityHashMap<String, Integer> peta2 = new IdentityHashMap<>(100);

    Ini membuat sebuah IdentityHashMap kosong dengan kapasitas awal yang ditentukan.

  3. Konstruktor dengan peta lain:

    Map<String, Integer> petaLama = new HashMap<>();
    IdentityHashMap<String, Integer> peta3 = new IdentityHashMap<>(petaLama);

    Ini membuat sebuah IdentityHashMap dengan pemetaan yang sama seperti Map yang ditentukan.

  4. Konstruktor dengan ukuran maksimum yang diharapkan:

    IdentityHashMap<String, Integer> peta4 = new IdentityHashMap<>(100, 0.75f);

    Ini membuat sebuah IdentityHashMap kosong dengan ukuran maksimum yang diharapkan dan faktor beban yang ditentukan.

Metode Kelas

Sekarang, mari kita lihat beberapa metode yang paling sering digunakan di IdentityHashMap:

Metode Deskripsi
put(K kunci, V nilai) Mengasosiasikan nilai yang ditentukan dengan kunci yang ditentukan
get(Object kunci) Mengembalikan nilai yang dimap oleh kunci yang ditentukan
remove(Object kunci) Menghapus pemetaan untuk kunci ini jika ada
clear() Menghapus semua pemetaan dari peta ini
size() Mengembalikan jumlah pemetaan kunci-nilai di peta ini
isEmpty() Mengembalikan true jika peta ini tidak berisi pemetaan kunci-nilai
containsKey(Object kunci) Mengembalikan true jika peta ini berisi pemetaan untuk kunci yang ditentukan
containsValue(Object nilai) Mengembalikan true jika peta ini memetakan satu atau lebih kunci ke nilai yang ditentukan

Mari kita lihat beberapa metode ini dalam aksi:

IdentityHashMap<String, Integer> umur = new IdentityHashMap<>();

// Menambah pasangan kunci-nilai
umur.put("Alice", 25);
umur.put("Bob", 30);

// Mendapatkan nilai
System.out.println("Umur Alice: " + umur.get("Alice")); // Output: Umur Alice: 25

// Memeriksa jika kunci ada
System.out.println("Apakah Charlie ada? " + umur.containsKey("Charlie")); // Output: Apakah Charlie ada? false

// Menghapus pasangan kunci-nilai
umur.remove("Bob");

// Memeriksa ukuran
System.out.println("Jumlah entri: " + umur.size()); // Output: Jumlah entri: 1

Metode Yang Ditempati

IdentityHashMap mewarisi metode dari kelas induk dan antarmuka mereka. Berikut beberapa diantaranya:

Ditempati Dari Metode
java.util.AbstractMap clone(), equals(), hashCode(), toString()
java.util.Map entrySet(), keySet(), values()
java.lang.Object finalize(), getClass(), notify(), notifyAll(), wait()

Contoh Menambah Pemetaan Kunci-Nilai di IdentityHashMap

Sekarang, mari kita lihat apa yang membuat IdentityHashMap khusus. Tidak seperti HashMap, yang menggunakan metode equals() untuk membandingkan kunci, IdentityHashMap menggunakan kesetaraan referensi (==). Ini berarti dua kunci dianggap sama hanya jika mereka adalah objek yang sama di memory.

Mari kita lihat ini dalam aksi:

IdentityHashMap<String, String> petaIdentitas = new IdentityHashMap<>();

String kunci1 = new String("Halo");
String kunci2 = new String("Halo");

petaIdentitas.put(kunci1, "Dunia1");
petaIdentitas.put(kunci2, "Dunia2");

System.out.println("Ukuran IdentityHashMap: " + petaIdentitas.size());
System.out.println("Nilai untuk kunci1: " + petaIdentitas.get(kunci1));
System.out.println("Nilai untuk kunci2: " + petaIdentitas.get(kunci2));

Output:

Ukuran IdentityHashMap: 2
Nilai untuk kunci1: Dunia1
Nilai untuk kunci2: Dunia2

Kaget? Walaupun kunci1 dan kunci2 memiliki konten yang sama ("Halo"), IdentityHashMap menangani mereka sebagai kunci yang berbeda karena mereka adalah objek String yang berbeda di memory.

perilaku ini bisa sangat berguna dalam beberapa skenario tertentu. Misalnya, bayangkan Anda menulis sebuah program untuk menelusuri versi yang berbeda dari sebuah dokumen. Setiap versi mungkin memiliki judul yang sama, tetapi Anda ingin menangani mereka sebagai entitas yang terpisah. IdentityHashMap akan sempurna untuk ini!

Dalam kesimpulan, IdentityHashMap seperti sepupu yang kikir di keluarga Map. Ia terlihat mirip dengan yang lain, tapi memiliki cara khusus untuk melakukan hal-hal. Mengerti kapan untuk menggunakannya bisa membuat Anda menjadi pengembang Java yang lebihversatile.

Ingat, di dunia pemrograman, tidak ada solusi satu ukuran untuk semua. Setiap alat memiliki tempatnya, dan mengetahui kapan untuk menggunakan IdentityHashMap adalah panah lain di rakit penyimpanan pengetahuan Java Anda. Tetap latihan, tetap curious, dan happy coding!

Credits: Image by storyset