Java LinkedHashMap

I denne vejledning lærer vi om Java LinkedHashMap-klassen og dens operationer ved hjælp af eksempler.

Den LinkedHashMapklasse af Java kollektioner rammer giver hash tabellen og linkede liste implementering af Map-grænsefladen.

Den LinkedHashMapgrænsefladen udvider HashMap klassen til at gemme sine poster i en hash-tabel. Det opretholder internt en dobbeltkoblet liste blandt alle sine poster for at bestille dens poster.

Oprettelse af et LinkedHashMap

For at oprette et linket hashmap skal vi først importere java.util.LinkedHashMappakken. Når vi først har importeret pakken, kan du oprette sammenkædede hashmaps i Java her.

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

I ovenstående kode har vi oprettet et sammenkædet hashmap med navne.

Her,

  • Nøgle - en unik identifikator, der bruges til at knytte hvert element (værdi) til et kort
  • Værdi - elementer tilknyttet tasterne på et kort

Læg mærke til delen new LinkedHashMap(8, 0.6). Her er den første parameter kapacitet, og den anden parameter er loadFactor .

  • kapacitet - Kapaciteten for denne sammenkædede hashmap er 8. Det betyder, at den kan gemme 8 poster.
  • loadFactor - Belastningsfaktoren for dette sammenkædede hashmap er 0,6. Dette betyder, at når vores hash-kort er udfyldt med 60%, flyttes posterne til en ny hash-tabel med dobbelt størrelse på den oprindelige hash-tabel.

Standardkapacitet og belastningsfaktor

Det er muligt at oprette en sammenkædet hashmap uden at definere dens kapacitet og belastningsfaktor. For eksempel,

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

Som standard,

  • kapaciteten for det linkede hashmap vil være 16
  • belastningsfaktoren er 0,75

Bemærk : LinkedHashMapKlassen giver os også mulighed for at definere rækkefølgen af ​​dens poster. For eksempel

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

Her er accessOrder en boolsk værdi. Dens standardværdi er false. I dette tilfælde ordnes poster i det linkede hashmap på basis af deres indsætningsrækkefølge.

Men hvis den truesendes som accessOrder, vil poster i den linkede hashmap blive bestilt fra senest adgang til senest adgang.

Oprettelse af LinkedHashMap fra andre kort

Her er hvordan vi kan oprette et linket hashmap, der indeholder alle elementerne på andre kort.

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

Produktion

 LinkedHashMap1: (To = 2, Fire = 4) LinkedHashMap2: (To = 2, Fire = 4, Tre = 3) 

Metoder til LinkedHashMap

Den LinkedHashMapklasse indeholder metoder, der tillader os at udføre forskellige operationer på kortet.

Indsæt elementer til LinkedHashMap

  • put() - indsætter den angivne nøgle- / værdikortlægning på kortet
  • putAll() - indsætter alle poster fra det angivne kort til dette kort
  • putIfAbsent() - indsætter den angivne nøgle- / værdikortlægning på kortet, hvis den angivne nøgle ikke er til stede på kortet

For eksempel,

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

Produktion

 Oprindeligt LinkedHashMap: (To = 2, Fire = 4) Opdateret LinkedHashMap: (To = 2, Fire = 4, Seks = 6) Ny LinkedHashMap: (En = 1, To = 2, Fire = 4, Seks = 6) 

Få adgang til LinkedHashMap-elementer

1. Brug af entrySet (), keySet () og værdier ()

  • entrySet() - returnerer et sæt med alle nøgle- / værdikortlæggelser på kortet
  • keySet() - returnerer et sæt af alle tasterne på kortet
  • values() - returnerer et sæt af alle kortets værdier

For eksempel,

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

Produktion

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Key / Value mappings: (One = 1, Two = 2, Three = 3) Keys: (One, Two, Three) Værdier: (1, 2, 3 ) 

2. Brug af get () og getOrDefault ()

  • get()- Returnerer den værdi, der er knyttet til den angivne nøgle. Hvis nøglen ikke findes, vender den tilbage null.
  • getOrDefault()- Returnerer den værdi, der er knyttet til den angivne nøgle. Hvis nøglen ikke findes, returnerer den den angivne standardværdi.

For eksempel,

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

Produktion

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Returneret nummer: 3 Returneret nummer: 5 

Fjernet LinkedHashMap-elementer

  • remove(key) - returnerer og fjerner posten tilknyttet den angivne nøgle fra kortet
  • remove(key, value) - fjerner kun posten fra kortet, hvis den angivne nøgle er kortlagt til at være den angivne værdi og returnerer en boolsk værdi

For eksempel,

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

Produktion

LinkedHashMap: (One = 1, Two = 2, Three = 3) Fjernet værdi: 2 Er posten (Three = 3) fjernet? Ægte opdateret LinkedHashMap: (One = 1)

Andre metoder til LinkedHashMap

Metode Beskrivelse
clear() fjerner alle poster fra kortet
containsKey() kontrollerer, om kortet indeholder den angivne nøgle og returnerer en boolsk værdi
containsValue() kontrollerer, om kortet indeholder den angivne værdi og returnerer en boolsk værdi
size() returnerer størrelsen på kortet
isEmpty() kontrollerer, om kortet er tomt og returnerer en boolsk værdi

LinkedHashMap Vs. HashMap

Både LinkedHashMapog HashMapimplementerer Mapgrænsefladen. Der er dog nogle forskelle mellem dem.

  • LinkedHashMapopretholder en dobbeltkoblet liste internt. På grund af dette opretholder det indsætningsrækkefølgen for dets elementer.
  • Den LinkedHashMapklasse kræver mere lagerplads end HashMap. Dette skyldes, LinkedHashMapat internt opretholder tilknyttede lister.
  • Udførelsen af LinkedHashMaper langsommere end HashMap.

Interessante artikler...