Java LinkedHashMap

I denne opplæringen vil vi lære om Java LinkedHashMap-klassen og dens operasjoner ved hjelp av eksempler.

Den LinkedHashMapklassen av Java samlinger rammeverket gir hash bordet og lenket liste gjennomføring av kartgrensesnittet.

Den LinkedHashMapgrensesnitt utvider HashMap klassen for å lagre oppføringene i en nøkkeltabell. Den internt opprettholder en dobbeltkoblet liste blant alle oppføringene for å bestille oppføringene.

Opprette et LinkedHashMap

For å opprette en koblet hashmap, må vi importere java.util.LinkedHashMappakken først. Når vi har importert pakken, kan du lage sammenkoblede hashmaps i Java.

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

I koden ovenfor har vi opprettet en koblet hashmap med navn.

Her,

  • Nøkkel - en unik identifikator som brukes til å knytte hvert element (verdi) til et kart
  • Verdi - elementer knyttet til tastene i et kart

Legg merke til delen new LinkedHashMap(8, 0.6). Her er den første parameteren kapasitet og den andre parameteren loadFactor .

  • kapasitet - Kapasiteten til denne sammenkoblede hashmappen er 8. Det betyr at den kan lagre 8 oppføringer.
  • loadFactor - Belastningsfaktoren for dette tilknyttede hashmap er 0,6. Dette betyr at når hash-kartet vårt fylles ut med 60%, flyttes oppføringene til en ny hash-tabell med dobbel størrelse på den opprinnelige hash-tabellen.

Standard kapasitet og lastfaktor

Det er mulig å lage en koblet hashmap uten å definere kapasitet og lastfaktor. For eksempel,

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

Som standard

  • kapasiteten til det tilknyttede hashmap vil være 16
  • lastfaktoren vil være 0,75

Merk : LinkedHashMapKlassen lar oss også definere rekkefølgen på oppføringene. For eksempel

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

Her er accessOrder en boolsk verdi. Standardverdien er false. I dette tilfellet bestilles oppføringer i den tilknyttede hashmap på grunnlag av innsettingsrekkefølgen.

Imidlertid, hvis truesendes som accessOrder, vil oppføringer i den tilknyttede hashmap bestilles fra minst nylig tilgang til sist tilgjengelige.

Opprette LinkedHashMap fra andre kart

Slik kan vi lage en koblet hashmap som inneholder alle elementene i andre kart.

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

Produksjon

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

Metoder for LinkedHashMap

Den LinkedHashMapklassen inneholder metoder som tillater oss å utføre ulike operasjoner på kartet.

Sett inn elementer i LinkedHashMap

  • put() - setter inn den spesifiserte nøkkel- / verdikartleggingen på kartet
  • putAll() - setter inn alle oppføringene fra det spesifiserte kartet til dette kartet
  • putIfAbsent() - setter inn den angitte nøkkel- / verdikartleggingen på kartet hvis den angitte nøkkelen ikke er til stede på kartet

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

Produksjon

 Opprinnelig LinkedHashMap: (To = 2, Fire = 4) Oppdatert LinkedHashMap: (To = 2, Fire = 4, Seks = 6) Ny LinkedHashMap: (En = 1, To = 2, Fire = 4, Seks = 6) 

Få tilgang til LinkedHashMap Elements

1. Bruke entrySet (), keySet () og verdier ()

  • entrySet() - returnerer et sett med all nøkkel- / verdikartlegging av kartet
  • keySet() - returnerer et sett med alle tastene på kartet
  • values() - returnerer et sett med alle verdiene på kartet

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

Produksjon

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

2. Bruke get () og getOrDefault ()

  • get()- Returnerer verdien som er knyttet til den angitte nøkkelen. Hvis nøkkelen ikke blir funnet, returnerer den null.
  • getOrDefault()- Returnerer verdien som er knyttet til den angitte nøkkelen. Hvis nøkkelen ikke blir funnet, returnerer den den angitte standardverdien.

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

Produksjon

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

Fjernet LinkedHashMap Elements

  • remove(key) - returnerer og fjerner oppføringen tilknyttet den angitte nøkkelen fra kartet
  • remove(key, value) - fjerner bare oppføringen fra kartet hvis den spesifiserte nøkkelen tilordnet for å være den angitte verdien og returnerer en boolsk verdi

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

Produksjon

LinkedHashMap: (One = 1, Two = 2, Three = 3) Fjernet verdi: 2 Er oppføringen (Three = 3) fjernet? Ekte oppdatert LinkedHashMap: (One = 1)

Andre metoder for LinkedHashMap

Metode Beskrivelse
clear() fjerner alle oppføringene fra kartet
containsKey() sjekker om kartet inneholder den angitte nøkkelen og returnerer en boolsk verdi
containsValue() sjekker om kartet inneholder den angitte verdien og returnerer en boolsk verdi
size() returnerer størrelsen på kartet
isEmpty() sjekker om kartet er tomt og returnerer en boolsk verdi

LinkedHashMap vs. HashMap

Både LinkedHashMapog HashMapimplementerer Mapgrensesnittet. Imidlertid er det noen forskjeller mellom dem.

  • LinkedHashMapopprettholder en dobbeltkoblet liste internt. På grunn av dette opprettholder den innsettingsrekkefølgen for elementene.
  • Den LinkedHashMapklassen krever mer lagringsplass enn HashMap. Dette fordi LinkedHashMapvedlikeholder lenkede lister internt.
  • Ytelsen til LinkedHashMaper tregere enn HashMap.

Interessante artikler...