Panduan WeakHashMap Class di Java: Untuk Pemula

Pengenalan

Halo para programmer Java masa depan! Hari ini, kita akan membahas tentang dunia yang menarik dari WeakHashMap di Java. Jangan khawatir jika Anda belum pernah mendengar tentang hal itu sebelumnya – kita akan memulai dari awal dan bergerak ke atas. Pada akhir tutorial ini, Anda akan menjadi ahli WeakHashMap!

Java - WeakHashMap

Apa itu WeakHashMap?

Bayangkan Anda sedang mengorganisir sebuah pesta besar, dan Anda memiliki daftar tamu. Tetapi ini bukanlah daftar tamu biasa – ini adalah daftar tamu magis yang secara otomatis menghapus orang-orang yang tidak bisa hadir lagi. Itulah sedikitnya yang dilakukan WeakHashMap di Java, tapi dengan objek sebagai ganti tamu pesta!

WeakHashMap adalah tipe khusus Map di Java yang mengijinkan kunci-kunci untuk dikumpulkan kembali saat mereka tidak lagi digunakan di tempat lain dalam program Anda. Hal ini bisa benar-benar berguna ketika Anda ingin membuat cache yang tidak menghalangi objek dari dikosongkan saat mereka sudah tidak diperlukan lagi.

Deklarasi Kelas

Mari kita mulai dengan melihat bagaimana kita mendeklarasikan WeakHashMap:

import java.util.WeakHashMap;

public class WeakHashMapExample {
public static void main(String[] args) {
WeakHashMap<String, Integer> myWeakMap = new WeakHashMap<>();
}
}

Dalam contoh ini, kita membuat WeakHashMap yang menggunakan objek String sebagai kunci dan objek Integer sebagai nilai. Bagian <String, Integer> disebut "generics" – itu seperti memberitahu Java jenis objek apa yang ingin kita simpan di peta kita.

Konstruktor Kelas

WeakHashMap datang dengan empat konstruktor yang berbeda. Mari kita lihat masing-masing dari mereka:

  1. Konstruktor default:

    WeakHashMap<String, Integer> map1 = new WeakHashMap<>();

    Ini membuat WeakHashMap kosong dengan kapasitas awal default (16) dan faktor beban (0.75).

  2. Konstruktor dengan kapasitas awal:

    WeakHashMap<String, Integer> map2 = new WeakHashMap<>(100);

    Ini membuat WeakHashMap dengan kapasitas awal yang ditentukan dan faktor beban default.

  3. Konstruktor dengan kapasitas awal dan faktor beban:

    WeakHashMap<String, Integer> map3 = new WeakHashMap<>(100, 0.8f);

    Ini membuat WeakHashMap dengan kapasitas awal dan faktor beban yang ditentukan.

  4. Konstruktor dengan Map lain:

    Map<String, Integer> existingMap = new HashMap<>();
    existingMap.put("Alice", 25);
    existingMap.put("Bob", 30);
    WeakHashMap<String, Integer> map4 = new WeakHashMap<>(existingMap);

    Ini membuat WeakHashMap dengan pemetaan yang sama seperti Map yang ditentukan.

Metode Kelas

WeakHashMap menyediakan beberapa metode untuk memanipulasi dan mengakses konten ini. Berikut adalah tabel beberapa metode yang paling sering digunakan:

Metode Deskripsi
put(K key, V value) Menambahkan pasangan kunci-nilai ke peta
get(Object key) Mengambil nilai yang terasosiasi dengan kunci yang ditentukan
remove(Object key) Menghapus pemetaan untuk kunci yang ditentukan
size() Mengembalikan jumlah pemetaan kunci-nilai di peta
clear() Menghapus semua pemetaan dari peta
containsKey(Object key) Mengembalikan true jika peta berisi kunci yang ditentukan
containsValue(Object value) Mengembalikan true jika peta berisi nilai yang ditentukan
isEmpty() Mengembalikan true jika peta tidak berisi pemetaan kunci-nilai

Mari kita lihat beberapa dari metode ini dalam aksi:

WeakHashMap<String, Integer> ageMap = new WeakHashMap<>();

// Menambahkan pasangan kunci-nilai
ageMap.put("Alice", 25);
ageMap.put("Bob", 30);
ageMap.put("Charlie", 35);

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

// Memeriksa jika kunci ada
System.out.println("Apakah David di peta? " + ageMap.containsKey("David")); // Output: Apakah David di peta? false

// Menghapus pasangan kunci-nilai
ageMap.remove("Bob");
System.out.println("Ukuran peta setelah menghapus Bob: " + ageMap.size()); // Output: Ukuran peta setelah menghapus Bob: 2

// Membersihkan peta
ageMap.clear();
System.out.println("Apakah peta kosong? " + ageMap.isEmpty()); // Output: Apakah peta kosong? true

Metode Yang Diketurankan

WeakHashMap mengikuti metode dari kelas induk dan antarmuka ini. Berikut adalah beberapa metode yang penting yang diketurankan:

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

Contoh Menambahkan Pasangan Kunci-Nilai ke WeakHashMap Dengan Pasangan Integer, Integer

Sekarang, mari kita lihat contoh yang lebih lengkap menggunakan WeakHashMap dengan kunci dan nilai Integer:

import java.util.WeakHashMap;

public class WeakHashMapExample {
public static void main(String[] args) {
WeakHashMap<Integer, Integer> squareMap = new WeakHashMap<>();

// Menambahkan pasangan kunci-nilai
for (int i = 1; i <= 5; i++) {
squareMap.put(i, i * i);
}

System.out.println("Peta awal: " + squareMap);

// Mengakses nilai
System.out.println("Kuadrat dari 3: " + squareMap.get(3));

// Menghapus pasangan kunci-nilai
squareMap.remove(2);
System.out.println("Peta setelah menghapus 2: " + squareMap);

// Memeriksa jika kunci ada
System.out.println("Apakah peta berisi 4? " + squareMap.containsKey(4));

// Memeriksa jika nilai ada
System.out.println("Apakah peta berisi nilai 16? " + squareMap.containsValue(16));

// Mengiterasi peta
System.out.println("Mengiterasi peta:");
for (Integer key : squareMap.keySet()) {
System.out.println("Kunci: " + key + ", Nilai: " + squareMap.get(key));
}
}
}

Output

Ketika Anda menjalankan kode ini, Anda akan melihat output yang mirip dengan ini:

Peta awal: {5=25, 4=16, 3=9, 2=4, 1=1}
Kuadrat dari 3: 9
Peta setelah menghapus 2: {5=25, 4=16, 3=9, 1=1}
Apakah peta berisi 4? true
Apakah peta berisi nilai 16? true
Mengiterasi peta:
Kunci: 5, Nilai: 25
Kunci: 4, Nilai: 16
Kunci: 3, Nilai: 9
Kunci: 1, Nilai: 1

Dan itu sudah! Anda baru saja mengambil langkah pertama Anda ke dunia WeakHashMap di Java. Ingat, kekuatan real dari WeakHashMap datang dari kemampuannya untuk mengijinkan kunci untuk dikumpulkan kembali saat mereka tidak lagi direferensikan di tempat lain dalam program Anda. Hal ini bisa sangat berguna dalam beberapa skenario, seperti mengimplementasikan cache atau mengelola data sementara.

Sebagai Anda terus menjalankan perjalanan Java Anda, Anda akan menemukan lebih dan lebih banyak situasi di mana WeakHashMap bisa menjadi alat penting di rak perangkat lunak programming Anda. Tetap latihan, tetap eksplorasi, dan yang paling penting, nikmati coding!

Credits: Image by storyset