Java LinkedHashMap

Dalam tutorial ini, kita akan belajar mengenai kelas Java LinkedHashMap dan operasinya dengan bantuan contoh.

The LinkedHashMapkelas rangka koleksi Java menyediakan jadual hash dan senarai pelaksanaan dikaitkan antara muka Map.

The LinkedHashMapmuka 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.LinkedHashMappakej 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 : LinkedHashMapKelas 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 truedilewatkan 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 LinkedHashMapkelas menyediakan kaedah yang membolehkan kita untuk melakukan pelbagai operasi di atas peta.

Masukkan Elemen ke LinkedHashMap

  • put() - memasukkan pemetaan kunci / nilai yang ditentukan ke peta
  • putAll() - memasukkan semua entri dari peta yang ditentukan ke peta ini
  • putIfAbsent() - 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 peta
  • keySet() - mengembalikan sekumpulan semua kunci peta
  • values() - 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 returns null.
  • 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 map
  • remove(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 LinkedHashMapdan HashMapmenggunakan Mapantara muka. Walau bagaimanapun, terdapat beberapa perbezaan di antara mereka.

  • LinkedHashMapmengekalkan senarai yang mempunyai dua kaitan secara dalaman. Oleh kerana itu, ia mengekalkan susunan kemasukan unsur-unsurnya.
  • The LinkedHashMapkelas memerlukan simpanan lebih daripada HashMap. Ini kerana LinkedHashMapmengekalkan senarai terpaut secara dalaman.
  • Prestasi LinkedHashMaplebih perlahan daripada HashMap.

Artikel menarik...