Java LinkedHashMap

V tej vadnici bomo s pomočjo primerov spoznali razred Java LinkedHashMap in njegovo delovanje.

LinkedHashMapRazred okviru Java zbirk zagotavlja mizo razpršitve in povezano izvajanje seznam vmesnika Map.

LinkedHashMapVmesnik razširja razred HashMap za shranjevanje svoje vnose v hash tabele. Notranjo vodi dvojno povezan seznam med vsemi svojimi vnosi, da jih razvrsti.

Ustvarjanje LinkedHashMap

Če želite ustvariti povezano hashmapo, moramo najprej uvoziti java.util.LinkedHashMappaket. Ko uvozimo paket, tukaj je opisano, kako lahko v Javi ustvarimo povezane hashmape.

 // LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f); 

V zgornji kodi smo ustvarili povezano hashmapo z imenom številke.

Tukaj,

  • Ključ - enolični identifikator, ki se uporablja za povezovanje vsakega elementa (vrednosti) na zemljevidu
  • Vrednost - elementi, povezani s ključi na zemljevidu

Upoštevajte del new LinkedHashMap(8, 0.6). Tu je prvi parameter zmogljivost, drugi pa loadFactor .

  • zmogljivost - Zmogljivost tega povezanega hashmapa je 8. Pomen, lahko shrani 8 vnosov.
  • loadFactor - Faktor obremenitve tega povezanega hashmapa je 0,6. To pomeni, da se vnosi, kadar je naša zemljepisna karta razpršena za 60%, premaknejo v novo razpredelnico z dvojno velikostjo izvirne razpredelnice.

Privzeta zmogljivost in faktor obremenitve

Možno je ustvariti povezano hashmapo, ne da bi opredelili njegovo zmogljivost in faktor obremenitve. Na primer

 //LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap(); 

Privzeto,

  • zmogljivost povezanega hashmapa bo 16
  • faktor obremenitve bo 0,75

Opomba : LinkedHashMapRazred nam omogoča tudi določitev vrstnega reda vnosov. Na primer

 // LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder); 

Tu je accessOrder logična vrednost. Njegova privzeta vrednost je false. V tem primeru so vnosi v povezani hashmapi razvrščeni na podlagi vrstnega reda vstavljanja.

Če pa truese posreduje kot accessOrder, bodo vnosi v povezanem hashmapu razvrščeni od najmanj nedavno dostopnih do nedavno dostopnih.

Ustvarjanje LinkedHashMap iz drugih zemljevidov

Tukaj je opisano, kako lahko ustvarimo povezani hashmap, ki vsebuje vse elemente drugih zemljevidov.

 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); ) ) 

Izhod

 LinkedHashMap1: (Two = 2, Four = 4) LinkedHashMap2: (Two = 2, Four = 4, Three = 3) 

Metode LinkedHashMap

LinkedHashMapRazred določa metode, ki nam omogočajo, da opravljajo različne dejavnosti na zemljevidu.

Vstavite elemente v LinkedHashMap

  • put() - na zemljevid vstavi določeno preslikavo ključa / vrednosti
  • putAll() - na to karto vstavi vse vnose z določenega zemljevida
  • putIfAbsent() - na zemljevid vstavi določeno preslikavo ključa / vrednosti, če določeni ključ ni prisoten na zemljevidu

Na primer

  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); ) ) 

Izhod

 Original LinkedHashMap: (Two = 2, Four = 4) Posodobljen LinkedHashMap: (Two = 2, Four = 4, Six = 6) New LinkedHashMap: (One = 1, Two = 2, Four = 4, Six = 6) 

Dostopite do elementov LinkedHashMap

1. Uporaba entrySet (), keySet () in vrednosti ()

  • entrySet() - vrne nabor vseh preslikav ključ / vrednost zemljevida
  • keySet() - vrne nabor vseh tipk zemljevida
  • values() - vrne niz vseh vrednosti zemljevida

Na primer

 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()); ) ) 

Izhod

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Preslikave ključa / vrednosti: (One = 1, Two = 2, Three = 3) Tipke: (One, Two, Three) Vrednosti: (1, 2, 3 ) 

2. Uporaba get () in getOrDefault ()

  • get()- Vrne vrednost, povezano z navedenim ključem. Če ključa ne najdemo, se vrne null.
  • getOrDefault()- Vrne vrednost, povezano z navedenim ključem. Če ključa ne najdemo, vrne določeno privzeto vrednost.

Na primer

 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); ) ) 

Izhod

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Vrnjena številka: 3 Vrnjena številka: 5 

Odstranjeni elementi LinkedHashMap

  • remove(key) - vrne in z zemljevida odstrani vnos, povezan z določenim ključem
  • remove(key, value) - odstrani vnos s zemljevida samo, če je podan ključ preslikan v določeno vrednost in vrne logično vrednost

Na primer

 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); ) ) 

Izhod

LinkedHashMap: (One = 1, Two = 2, Three = 3) Odstranjena vrednost: 2 Ali je vnos (Three = 3) odstranjen? Resnično posodobljen LinkedHashMap: (One = 1)

Druge metode LinkedHashMap

Metoda Opis
clear() odstrani vse vnose z zemljevida
containsKey() preveri, ali zemljevid vsebuje navedeni ključ in vrne logično vrednost
containsValue() preveri, ali zemljevid vsebuje navedeno vrednost in vrne logično vrednost
size() vrne velikost zemljevida
isEmpty() preveri, ali je zemljevid prazen, in vrne logično vrednost

LinkedHashMap Vs. HashMap

Tako the LinkedHashMapkot tudi HashMapimplementira Mapvmesnik. Vendar obstajajo nekatere razlike med njimi.

  • LinkedHashMapvodi interno dvojno povezan seznam. Zaradi tega ohranja vrstni red vstavljanja svojih elementov.
  • LinkedHashMapRazred zahteva več prostora za shranjevanje kot HashMap. To je zato, ker LinkedHashMapinterno vzdržuje povezane sezname.
  • Zmogljivost LinkedHashMapje počasnejša od HashMap.

Zanimive Članki...