I denne opplæringen vil vi lære om Java LinkedHashMap-klassen og dens operasjoner ved hjelp av eksempler.
Den LinkedHashMap
klassen av Java samlinger rammeverket gir hash bordet og lenket liste gjennomføring av kartgrensesnittet.
Den LinkedHashMap
grensesnitt 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.LinkedHashMap
pakken 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 : LinkedHashMap
Klassen 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 true
sendes 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 LinkedHashMap
klassen 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å kartetputAll()
- setter inn alle oppføringene fra det spesifiserte kartet til dette kartetputIfAbsent()
- 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 kartetkeySet()
- returnerer et sett med alle tastene på kartetvalues()
- 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 dennull
.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 kartetremove(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 LinkedHashMap
og HashMap
implementerer Map
grensesnittet. Imidlertid er det noen forskjeller mellom dem.
LinkedHashMap
opprettholder en dobbeltkoblet liste internt. På grunn av dette opprettholder den innsettingsrekkefølgen for elementene.- Den
LinkedHashMap
klassen krever mer lagringsplass ennHashMap
. Dette fordiLinkedHashMap
vedlikeholder lenkede lister internt. - Ytelsen til
LinkedHashMap
er tregere ennHashMap
.