Java - Kelas IdentityHashMap

Pengenalan

Halo kepada semua pembangun Java masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia Kelas IdentityHashMap di Java. Saya tahu apa yang mungkin anda fikirkan: "Kelas peta lagi? Bukannya kita baru saja belajar tentang HashMap?" Walau bagaimanapun, anda betul, tetapi percayalah, IdentityHashMap memiliki cita rasa yang unik dan khas yang membuatnya istimewa. Mari kita wujud ke dalamnya!

Java - The IdentityHashMap Class

Pengisytiharan Kelas

Pertama-tama, mari kita lihat bagaimana untuk mengisytiharkan IdentityHashMap:

import java.util.IdentityHashMap;

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

Baris kode ini membuat IdentityHashMap baru yang akan menyimpan kunci String dan nilai Integer. Tetapi apa yang membuatnya berbeza dari HashMap biasa? Walau, itulah tempat hal-hal menjadi menarik!

Konstruktor Kelas

IdentityHashMap datang dengan empat konstruktor. Mari kita kongsi mereka:

  1. Konstruktor default:

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

    Ini membuat IdentityHashMap kosong dengan kapasiti default 21.

  2. Konstruktor dengan kapasiti awal:

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

    Ini membuat IdentityHashMap kosong dengan kapasiti awal yang dinyatakan.

  3. Konstruktor dengan peta lain:

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

    Ini membuat IdentityHashMap dengan pemetaan yang sama seperti Peta yang dinyatakan.

  4. Konstruktor dengan ukuran maksimum yang dijangka:

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

    Ini membuat IdentityHashMap kosong dengan ukuran maksimum yang dijangka dan faktor beban yang dinyatakan.

Metode Kelas

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

Metode Keterangan
put(K kunci, V nilai) Mengasosiasikan nilai yang dinyatakan dengan kunci yang dinyatakan
get(Object kunci) Mengembalikan nilai yang mana kunci yang dinyatakan adalah dipetakan
remove(Object kunci) Menghapus pemetaan bagi kunci ini jika hadir
clear() Menghapus semua pemetaan dari peta ini
size() Mengembalikan jumlah pemetaan kunci-nilai di peta ini
isEmpty() Mengembalikan true jika peta ini tidak mengandungi pemetaan kunci-nilai
containsKey(Object kunci) Mengembalikan true jika peta ini mengandungi pemetaan bagi kunci yang dinyatakan
containsValue(Object nilai) Mengembalikan true jika peta ini memetakan satu atau lebih kunci ke nilai yang dinyatakan

Mari lihat beberapa metode ini dalam tindakan:

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("Adakah Charlie ada? " + umur.containsKey("Charlie")); // Output: Adakah Charlie ada? false

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

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

Metode Yang Diketuruni

IdentityHashMap mengikutserta metode dari kelas induk dan antara muka mereka. Berikut adalah beberapa diantaranya:

Diketuruni 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 wujud ke 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 atas penyimpanan.

Mari lihat ini dalam tindakan:

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

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

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

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

Output:

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

Kaget? Walaupun kunci1 dan kunci2 memiliki kandungan yang sama ("Hello"), IdentityHashMap menganggap mereka sebagai kunci yang berbeza karena mereka adalah objek String yang berbeza di atas penyimpanan.

Kelakuannya bisa menjadi sangat berguna dalam beberapa senario. Misalnya, bayangkan anda menulis program untuk menjejaki versi yang berbeza dari dokumen. Setiap versi mungkin memiliki judul yang sama, tetapi anda ingin menganggap mereka sebagai entiti yang berbeza. IdentityHashMap akan perfect untuk ini!

Dalam kesimpulan, IdentityHashMap adalah seperti sepupu yang kikir di atas keluarga Peta. Ia terlihat seperti yang lain, tetapi ia memiliki cara unik untuk melakukan hal-hal. Mengerti bila untuk menggunakannya bisa membuat anda menjadi pembangun Java yang lebihversatile.

Ingat, di dunia pemrograman, tidak ada satu-satu-sesuai-semua solusi. Setiap alat memiliki tempatnya, dan mengetahui bila untuk menggunakan IdentityHashMap adalah satu lagi panah di atas rakit penyimpanan pengetahuan Java anda. Teruskan untuk berlatih, tetaplah khusus, dan happy coding!

Credits: Image by storyset