Java LinkedHashMap

I denna handledning lär vi oss om klassen Java LinkedHashMap och dess verksamhet med hjälp av exempel.

Den LinkedHashMapklass av samlingar ramen för Java ger hashtabellen och länkad lista genomförandet av Map-gränssnittet.

Den LinkedHashMapGränssnittet utökar HashMap klass för att lagra sina poster i en hashtabell. Den har internt en dubbelt länkad lista bland alla sina poster för att beställa sina poster.

Skapa en LinkedHashMap

För att skapa en länkad hashmap måste vi importera java.util.LinkedHashMappaketet först. När vi har importerat paketet, här är hur vi kan skapa länkade hashmaps i Java.

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

I ovanstående kod har vi skapat en länkad hashmap med nummer.

Här,

  • Nyckel - en unik identifierare som används för att associera varje element (värde) på en karta
  • Värde - element associerade med tangenterna på en karta

Lägg märke till delen new LinkedHashMap(8, 0.6). Här är den första parametern kapacitet och den andra parametern är loadFactor .

  • Kapacitet - Kapaciteten för denna länkade hashmap är 8. Det betyder att den kan lagra 8 poster.
  • loadFactor - Lastfaktorn för denna länkade hashmap är 0,6. Det betyder att när vår hashkarta fylls med 60% flyttas posterna till en ny hashtabell med dubbelt så stor som den ursprungliga hashtabellen.

Standardkapacitet och lastfaktor

Det är möjligt att skapa en länkad hashmap utan att definiera dess kapacitet och belastningsfaktor. Till exempel,

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

Som standard,

  • kapaciteten för den länkade hashmap kommer att vara 16
  • belastningsfaktorn blir 0,75

Obs : LinkedHashMapKlassen tillåter oss också att definiera ordningen på sina poster. Till exempel

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

Här är accessOrder ett booleskt värde. Standardvärdet är false. I det här fallet ordnas poster i den länkade hashmappen på grundval av deras infogningsordning.

Om den trueskickas som accessOrder kommer emellertid poster i den länkade hashmapan att beställas från åtminstone nyligen åtkomlig till senast åtkomst.

Skapa LinkedHashMap från andra kartor

Så här kan vi skapa en länkad hashmap som innehåller alla element i andra kartor.

 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: (Två = 2, Fyra = 4) LinkedHashMap2: (Två = 2, Fyra = 4, Tre = 3) 

Metoder för LinkedHashMap

I LinkedHashMapklassen innehåller metoder som tillåter oss att utföra olika operationer på kartan.

Infoga element till LinkedHashMap

  • put() - infogar den angivna nyckel- / värdekartläggningen på kartan
  • putAll() - infogar alla poster från den angivna kartan till denna karta
  • putIfAbsent() - infogar den angivna nyckel- / värdekartläggningen på kartan om den angivna nyckeln inte finns på kartan

Till exempel,

  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

 Original LinkedHashMap: (Två = 2, Fyra = 4) Uppdaterade LinkedHashMap: (Två = 2, Fyra = 4, Sex = 6) Ny LinkedHashMap: (En = 1, Två = 2, Fyra = 4, Sex = 6) 

Åtkomst till LinkedHashMap-element

1. Använda entrySet (), keySet () och värden ()

  • entrySet() - returnerar en uppsättning av alla nyckel- / värdekartläggningar på kartan
  • keySet() - returnerar en uppsättning av alla knappar på kartan
  • values() - returnerar en uppsättning av alla värden på kartan

Till exempel,

 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ärden: (1, 2, 3 ) 

2. Använda get () och getOrDefault ()

  • get()- Returnerar värdet som är associerat med den angivna nyckeln. Om nyckeln inte hittas återgår den null.
  • getOrDefault()- Returnerar värdet som är associerat med den angivna nyckeln. Om nyckeln inte hittas returnerar den det angivna standardvärdet.

Till exempel,

 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) Returned Number: 3 Returned Number: 5 

Ta bort LinkedHashMap-element

  • remove(key) - returnerar och tar bort posten som är associerad med den angivna nyckeln från kartan
  • remove(key, value) - tar bort posten från kartan endast om den angivna nyckeln mappas för att vara det angivna värdet och returnerar ett booleskt värde

Till exempel,

 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) Borttaget värde: 2 Tar posten (Three = 3) bort? Sann uppdaterad LinkedHashMap: (One = 1)

Andra metoder för LinkedHashMap

Metod Beskrivning
clear() tar bort alla poster från kartan
containsKey() kontrollerar om kartan innehåller den angivna nyckeln och returnerar ett booleskt värde
containsValue() kontrollerar om kartan innehåller det angivna värdet och returnerar ett booleskt värde
size() returnerar storleken på kartan
isEmpty() kontrollerar om kartan är tom och returnerar ett booleskt värde

LinkedHashMap Vs. HashMap

Både LinkedHashMapoch HashMapimplementerar Mapgränssnittet. Det finns dock vissa skillnader mellan dem.

  • LinkedHashMaphar en dubbelt länkad lista internt. På grund av detta bibehåller det införingsordningen för dess element.
  • Den LinkedHashMapklassen kräver mer lagringsutrymme än HashMap. Detta beror på att LinkedHashMapunderhålla länkade listor internt.
  • Prestanda för LinkedHashMapär långsammare än HashMap.

Intressanta artiklar...