Dalam tutorial ini, kita akan belajar mengenai kelas Java LinkedHashMap dan operasinya dengan bantuan contoh.
The LinkedHashMap
kelas rangka koleksi Java menyediakan jadual hash dan senarai pelaksanaan dikaitkan antara muka Map.
The LinkedHashMap
muka memanjangkan kelas HashMap untuk menyimpan entri dalam jadual hash. Secara dalaman, ia menyimpan senarai yang mempunyai kaitan dua kali ganda di antara semua penyertaannya untuk menyusun kemasukannya.
Membuat LinkedHashMap
Untuk membuat hashmap terpaut, kita mesti mengimport java.util.LinkedHashMap
pakej terlebih dahulu. Setelah kami mengimport pakej, berikut adalah bagaimana kita dapat membuat hashmaps yang dipautkan di Java.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f);
Dalam kod di atas, kami telah membuat hashmap terpaut bernama nombor.
Di sini,
- Kunci - pengecam unik yang digunakan untuk mengaitkan setiap elemen (nilai) dalam peta
- Nilai - elemen yang berkaitan dengan kunci dalam peta
Perhatikan bahagiannya new LinkedHashMap(8, 0.6)
. Di sini, parameter pertama adalah kapasiti dan parameter kedua adalah loadFactor .
- kapasiti - Kapasiti hashmap yang dipautkan ini adalah 8. Maksudnya, ia dapat menyimpan 8 entri.
- loadFactor - Faktor beban hashmap terpaut ini ialah 0.6. Ini bermaksud, setiap kali peta hash kami diisi sebanyak 60%, entri dipindahkan ke jadual hash baru yang dua kali ganda dari ukuran jadual hash asal.
Kapasiti lalai dan faktor beban
Anda boleh membuat hashmap terpaut tanpa menentukan kapasiti dan faktor muatannya. Sebagai contoh,
//LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap();
Secara lalai,
- kapasiti hashmap yang dipautkan adalah 16
- faktor beban akan menjadi 0.75
Catatan : LinkedHashMap
Kelas ini juga membolehkan kami menentukan urutan penyertaannya. Sebagai contoh
// LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder);
Di sini, accessOrder adalah nilai boolean. Nilai lalai adalah false
. Dalam kes ini, entri dalam hashmap yang dipautkan disusun berdasarkan perintah penyisipan mereka.
Namun, jika true
dilewatkan sebagai accessOrder, entri dalam hashmap yang dipautkan akan dipesan dari yang paling baru diakses ke yang paling baru diakses.
Membuat LinkedHashMap dari Peta Lain
Inilah cara kami membuat hashmap terpaut yang mengandungi semua elemen peta lain.
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating a LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("LinkedHashMap1: " + evenNumbers); // Creating a LinkedHashMap from other LinkedHashMap LinkedHashMap numbers = new LinkedHashMap(evenNumbers); numbers.put("Three", 3); System.out.println("LinkedHashMap2: " + numbers); ) )
Pengeluaran
LinkedHashMap1: (Dua = 2, Empat = 4) LinkedHashMap2: (Dua = 2, Empat = 4, Tiga = 3)
Kaedah LinkedHashMap
The LinkedHashMap
kelas menyediakan kaedah yang membolehkan kita untuk melakukan pelbagai operasi di atas peta.
Masukkan Elemen ke LinkedHashMap
put()
- memasukkan pemetaan kunci / nilai yang ditentukan ke petaputAll()
- memasukkan semua entri dari peta yang ditentukan ke peta iniputIfAbsent()
- memasukkan pemetaan kunci / nilai yang ditentukan ke peta jika kunci yang ditentukan tidak terdapat dalam peta
Sebagai contoh,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); // Using put() evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("Original LinkedHashMap: " + evenNumbers); // Using putIfAbsent() evenNumbers.putIfAbsent("Six", 6); System.out.println("Updated LinkedHashMap(): " + evenNumbers); //Creating LinkedHashMap of numbers LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); // Using putAll() numbers.putAll(evenNumbers); System.out.println("New LinkedHashMap: " + numbers); ) )
Pengeluaran
LinkedHashMap Asal: (Two = 2, Four = 4) LinkedHashMap yang dikemas kini: (Dua = 2, Empat = 4, Enam = 6) LinkedHashMap Baru: (Satu = 1, Dua = 2, Empat = 4, Enam = 6)
Akses Elemen LinkedHashMap
1. Menggunakan entrySet (), keySet () dan nilai ()
entrySet()
- mengembalikan sekumpulan semua pemetaan kunci / nilai petakeySet()
- mengembalikan sekumpulan semua kunci petavalues()
- mengembalikan sekumpulan semua nilai peta
Sebagai contoh,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + 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()); ) )
Pengeluaran
LinkedHashMap: (One=1, Two=2, Three=3) Key/Value mappings: (One=1, Two=2, Three=3) Keys: (One, Two, Three) Values: (1, 2, 3)
2. Using get() and getOrDefault()
get()
- Returns the value associated with the specified key. If the key is not found, it returnsnull
.getOrDefault()
- Returns the value associated with the specified key. If the key is not found, it returns the specified default value.
For example,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using get() int value1 = numbers.get("Three"); System.out.println("Returned Number: " + value1); // Using getOrDefault() int value2 = numbers.getOrDefault("Five", 5); System.out.println("Returned Number: " + value2); ) )
Output
LinkedHashMap: (One=1, Two=2, Three=3) Returned Number: 3 Returned Number: 5
Removed LinkedHashMap Elements
remove(key)
- returns and removes the entry associated with the specified key from the mapremove(key, value)
- removes the entry from the map only if the specified key mapped to be the specified value and return a boolean value
For example,
import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // remove method with single parameter int value = numbers.remove("Two"); System.out.println("Removed value: " + value); // remove method with two parameters boolean result = numbers.remove("Three", 3); System.out.println("Is the entry Three removed? " + result); System.out.println("Updated LinkedHashMap: " + numbers); ) )
Output
LinkedHashMap: (One=1, Two=2, Three=3) Removed value: 2 Is the entry (Three=3) removed? True Updated LinkedHashMap: (One=1)
Kaedah lain LinkedHashMap
Kaedah | Penerangan |
---|---|
clear() | membuang semua entri dari peta |
containsKey() | memeriksa apakah peta mengandungi kunci yang ditentukan dan mengembalikan nilai boolean |
containsValue() | memeriksa apakah peta mengandungi nilai yang ditentukan dan mengembalikan nilai boolean |
size() | mengembalikan ukuran peta |
isEmpty() | memeriksa apakah peta kosong dan mengembalikan nilai boolean |
LinkedHashMap Vs. Peta Hash
Kedua-dua LinkedHashMap
dan HashMap
menggunakan Map
antara muka. Walau bagaimanapun, terdapat beberapa perbezaan di antara mereka.
LinkedHashMap
mengekalkan senarai yang mempunyai dua kaitan secara dalaman. Oleh kerana itu, ia mengekalkan susunan kemasukan unsur-unsurnya.- The
LinkedHashMap
kelas memerlukan simpanan lebih daripadaHashMap
. Ini keranaLinkedHashMap
mengekalkan senarai terpaut secara dalaman. - Prestasi
LinkedHashMap
lebih perlahan daripadaHashMap
.