java
Dalam tutorial ini, kita akan belajar tentang Java WeakHashMap dan operasinya dengan bantuan contoh. Kita juga akan belajar tentang perbedaan antara WeakHashMap dan HashMap
WeakHashMap
kelas kerangka koleksi Java menyediakan fitur struktur data tabel hash..
Ini mengimplementasikan antarmuka Peta.
Catatan :Kunci dari peta hash yang lemah adalah dari WeakReference ketik.
Objek dari tipe referensi lemah dapat menjadi sampah yang dikumpulkan di Java jika referensi tidak lagi digunakan dalam program.
Mari kita belajar membuat peta hash yang lemah terlebih dahulu. Kemudian, kita akan mempelajari perbedaannya dengan hashmap.
Untuk membuat peta hash yang lemah, kita harus mengimpor java.util.WeakHashMap
paket dulu. Setelah kita mengimpor paket, berikut adalah cara membuat peta hash yang lemah di Java.
//WeakHashMap creation with capacity 8 and load factor 0.6
WeakHashMap<Key, Value> numbers = new WeakHashMap<>(8, 0.6);
Dalam kode di atas, kami telah membuat peta hash yang lemah bernama angka .
Di sini,
Perhatikan bagian new WeakHashMap<>(8, 0.6)
. Di sini, parameter pertama adalah kapasitas dan parameter kedua adalah loadFactor .
Kapasitas default dan faktor beban
Dimungkinkan untuk membuat peta hash yang lemah tanpa menentukan kapasitas dan faktor bebannya. Misalnya,
// WeakHashMap with default capacity and load factor
WeakHashMap<Key, Value> numbers1 = new WeakHashMap<>();
Secara default,
Mari kita lihat implementasi dari hashmap yang lemah di Java.
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String two = new String("Two");
Integer twoValue = 2;
String four = new String("Four");
Integer fourValue = 4;
// Inserting elements
numbers.put(two, twoValue);
numbers.put(four, fourValue);
System.out.println("WeakHashMap: " + numbers);
// Make the reference null
two = null;
// Perform garbage collection
System.gc();
System.out.println("WeakHashMap after garbage collection: " + numbers);
}
}
Keluaran
WeakHashMap: {Four=4, Two=2} WeakHashMap after garbage collection: {Four}
Seperti yang kita lihat, ketika kunci dua dari peta hash yang lemah disetel ke null
dan melakukan pengumpulan sampah, kuncinya dihapus.
Itu karena tidak seperti peta hash, kunci peta hash yang lemah adalah referensi yang lemah Tipe. Ini berarti entri peta dihapus oleh pengumpul sampah jika kunci entri tersebut tidak lagi digunakan. Ini berguna untuk menghemat sumber daya.
Sekarang mari kita lihat implementasi yang sama di hashmap.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// Creating HashMap of even numbers
HashMap<String, Integer> numbers = new HashMap<>();
String two = new String("Two");
Integer twoValue = 2;
String four = new String("Four");
Integer fourValue = 4;
// Inserting elements
numbers.put(two, twoValue);
numbers.put(four, fourValue);
System.out.println("HashMap: " + numbers);
// Make the reference null
two = null;
// Perform garbage collection
System.gc();
System.out.println("HashMap after garbage collection: " + numbers);
}
}
Keluaran
HashMap: {Four=4, Two=2} HashMap after garbage collection: {Four=4, Two=2}
Di sini, ketika kunci dua dari peta hash disetel ke null
dan melakukan pengumpulan sampah, kuncinya tidak dihapus.
Ini karena tidak seperti peta hash yang lemah, kunci peta hash memiliki referensi yang kuat Tipe. Ini berarti entri peta tidak dihapus oleh pengumpul sampah meskipun kunci entri tersebut tidak lagi digunakan.
Catatan :Semua fungsi hashmaps dan hashmaps lemah serupa kecuali kunci dari hashmap lemah adalah referensi yang lemah, sedangkan kunci hashmap adalah referensi yang kuat.
Inilah cara kita membuat peta hash yang lemah dari peta lain.
import java.util.HashMap;
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating a hashmap of even numbers
HashMap<String, Integer> evenNumbers = new HashMap<>();
String two = new String("Two");
Integer twoValue = 2;
evenNumbers.put(two, twoValue);
System.out.println("HashMap: " + evenNumbers);
// Creating a weak hash map from other hashmap
WeakHashMap<String, Integer> numbers = new WeakHashMap<>(evenNumbers);
System.out.println("WeakHashMap: " + numbers);
}
}
Keluaran
HashMap: {Two=2} WeakHashMap: {Two=2}
WeakHashMap
class menyediakan metode yang memungkinkan kita melakukan berbagai operasi pada peta.
put()
- menyisipkan pemetaan kunci/nilai yang ditentukan ke petaputAll()
- menyisipkan semua entri dari peta yang ditentukan ke peta iniputIfAbsent()
- menyisipkan pemetaan kunci/nilai yang ditentukan ke peta jika kunci yang ditentukan tidak ada di petaMisalnya,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> evenNumbers = new WeakHashMap<>();
String two = new String("Two");
Integer twoValue = 2;
// Using put()
evenNumbers.put(two, twoValue);
String four = new String("Four");
Integer fourValue = 4;
// Using putIfAbsent()
evenNumbers.putIfAbsent(four, fourValue);
System.out.println("WeakHashMap of even numbers: " + evenNumbers);
//Creating WeakHashMap of numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
// Using putAll()
numbers.putAll(evenNumbers);
System.out.println("WeakHashMap of numbers: " + numbers);
}
}
Keluaran
WeakHashMap of even numbers: {Four=4, Two=2} WeakHashMap of numbers: {Two=2, Four=4, One=1}
1. Menggunakan entrySet(), keySet() dan values()
entrySet()
- mengembalikan satu set semua pemetaan kunci/nilai petakeySet()
- mengembalikan satu set semua kunci petavalues()
- mengembalikan satu set semua nilai petaMisalnya,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
String two = new String("Two");
Integer twoValue = 2;
numbers.put(two, twoValue);
System.out.println("WeakHashMap: " + numbers);
// Using entrySet()
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet()
System.out.println("Keys: " + numbers.keySet());
// Using values()
System.out.println("Values: " + numbers.values());
}
}
Keluaran
WeakHashMap: {Two=2, One=1} Key/Value mappings: [Two=2, One=1] Keys: [Two, One] Values: [1, 2]
2. Menggunakan get() dan getOrDefault()
get()
- Mengembalikan nilai yang terkait dengan kunci yang ditentukan. Mengembalikan null
jika kunci tidak ditemukan.getOrDefault()
- Mengembalikan nilai yang terkait dengan kunci yang ditentukan. Mengembalikan nilai default yang ditentukan jika kunci tidak ditemukan.Misalnya,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
String two = new String("Two");
Integer twoValue = 2;
numbers.put(two, twoValue);
System.out.println("WeakHashMap: " + numbers);
// Using get()
int value1 = numbers.get("Two");
System.out.println("Using get(): " + value1);
// Using getOrDefault()
int value2 = numbers.getOrDefault("Four", 4);
System.out.println("Using getOrDefault(): " + value2);
}
}
Keluaran
WeakHashMap: {Two=2, One=1} Using get(): 2 Using getOrDefault(): 4
remove(key)
- mengembalikan dan menghapus entri yang terkait dengan kunci yang ditentukan dari petaremove(key, value)
- menghapus entri dari peta hanya jika kunci yang ditentukan dipetakan ke nilai yang ditentukan dan mengembalikan nilai booleanMisalnya,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
String two = new String("Two");
Integer twoValue = 2;
numbers.put(two, twoValue);
System.out.println("WeakHashMap: " + numbers);
// Using remove() with single parameter
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using remove() with 2 parameters
boolean result = numbers.remove("One", 3);
System.out.println("Is the entry {One=3} removed? " + result);
System.out.println("Updated WeakHashMap: " + numbers);
}
}
Keluaran
WeakHashMap: {Two=2, One=1} Removed value: 2 Is the entry {One=3} removed? False Updated WeakHashMap: {One=1}
Metode | Deskripsi |
---|---|
clear() | Menghapus semua entri dari peta |
containsKey() | Memeriksa apakah peta berisi kunci yang ditentukan dan mengembalikan nilai boolean |
containsValue() | Memeriksa apakah peta berisi nilai yang ditentukan dan mengembalikan nilai boolean |
size() | Mengembalikan ukuran peta |
isEmpty() | Memeriksa apakah peta kosong dan mengembalikan nilai boolean |
Untuk mempelajari lebih lanjut, kunjungi Java WeakHashMap (dokumentasi resmi Java).
java
Antarmuka Deque Java Dalam tutorial ini, kita akan belajar tentang antarmuka Deque, cara menggunakannya, dan metodenya. Deque antarmuka kerangka koleksi Java menyediakan fungsionalitas antrian berujung ganda. Ini memperluas Queue antarmuka. Kerja Deque Dalam antrian biasa, elemen ditambahkan dar
Java HashMap Dalam tutorial ini, kita akan belajar tentang kelas Java HashMap dan berbagai operasinya dengan bantuan contoh. HashMap kelas kerangka koleksi Java menyediakan fungsionalitas struktur data tabel hash. Ini menyimpan elemen di kunci/nilai berpasangan. Di sini, kunci adalah pengidentifik
Java WeakHashMap Dalam tutorial ini, kita akan belajar tentang Java WeakHashMap dan operasinya dengan bantuan contoh. Kita juga akan belajar tentang perbedaan antara WeakHashMap dan HashMap WeakHashMap kelas kerangka koleksi Java menyediakan fitur struktur data tabel hash.. Ini mengimplementasika
Apa itu Hashmap di Java? HashMap pada dasarnya menunjuk kunci unik ke nilai corresponding yang sesuai yang dapat diambil pada titik tertentu. Fitur Java Hashmap a) Nilai dapat disimpan dalam peta dengan membentuk nilai kunci pasangan. Nilai dapat diambil menggunakan kunci dengan meneruskannya k