Java LinkedHashMap

În acest tutorial, vom afla despre clasa Java LinkedHashMap și operațiunile sale cu ajutorul unor exemple.

LinkedHashMapClasa cadrului colecțiilor Java oferă tabelul hash și legate punerea în aplicare lista cu interfața hărții.

LinkedHashMapInterfața extinde clasa HashMap pentru a stoca intrările sale într - un tabel hash. Păstrează o listă dublă legată între toate intrările sale pentru a-și comanda intrările.

Crearea unui LinkedHashMap

Pentru a crea un hashmap conectat, trebuie mai java.util.LinkedHashMapîntâi să importăm pachetul. Odată ce am importat pachetul, iată cum putem crea hashmap-uri legate în Java.

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

În codul de mai sus, am creat un hashmap conectat numit numere.

Aici,

  • Cheie - un identificator unic utilizat pentru a asocia fiecare element (valoare) pe o hartă
  • Valoare - elemente asociate tastelor dintr-o hartă

Observați partea new LinkedHashMap(8, 0.6). Aici, primul parametru este capacitatea, iar al doilea parametru este loadFactor .

  • capacitate - Capacitatea acestui hashmap conectat este 8. Adică, poate stoca 8 intrări.
  • loadFactor - Factorul de încărcare al acestui hashmap conectat este de 0,6. Aceasta înseamnă că, de fiecare dată când harta noastră hash este umplută cu 60%, intrările sunt mutate într-un nou tabel hash de dimensiunea dublă față de tabelul hash original.

Capacitatea implicită și factorul de încărcare

Este posibil să creați un hashmap conectat fără a-i defini capacitatea și factorul de încărcare. De exemplu,

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

În mod implicit,

  • capacitatea hashmap-ului legat va fi de 16
  • factorul de încărcare va fi 0,75

Notă : LinkedHashMapClasa ne permite, de asemenea, să definim ordinea intrărilor sale. De exemplu

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

Aici, accessOrder este o valoare booleană. Valoarea sa implicită este false. În acest caz, intrările din hashmap-ul legat sunt ordonate pe baza ordinii lor de inserare.

Cu toate acestea, dacă trueeste trecut ca accessOrder, intrările din hashmap-ul conectat vor fi comandate de la cel mai recent accesat la cel mai recent accesat.

Crearea LinkedHashMap din alte hărți

Iată cum putem crea un hashmap conectat care să conțină toate elementele altor hărți.

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

Ieșire

 LinkedHashMap1: (Două = 2, Patru = 4) LinkedHashMap2: (Două = 2, Patru = 4, Trei = 3) 

Metode de LinkedHashMap

LinkedHashMapClasa prevede metode care ne permit de a efectua diverse operații pe hartă.

Inserați elemente în LinkedHashMap

  • put() - inserează maparea cheii / valorilor specificate pe hartă
  • putAll() - inserează toate intrările de pe harta specificată în această hartă
  • putIfAbsent() - inserează maparea cheii / valorilor specificate pe hartă dacă cheia specificată nu este prezentă pe hartă

De exemplu,

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

Ieșire

 LinkedHashMap original: (Two = 2, Four = 4) Actualizat LinkedHashMap: (Two = 2, Four = 4, Six = 6) New LinkedHashMap: (One = 1, Two = 2, Four = 4, Six = 6) 

Accesați elementele LinkedHashMap

1. Utilizarea entrySet (), keySet () și valori ()

  • entrySet() - returnează un set de toate maparea cheie / valoare a hărții
  • keySet() - returnează un set de toate tastele hărții
  • values() - returnează un set cu toate valorile hărții

De exemplu,

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

Ieșire

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Asocieri cheie / valoare: (One = 1, Two = 2, Three = 3) Taste: (One, Two, Three) Valori: (1, 2, 3 ) 

2. Utilizarea get () și getOrDefault ()

  • get()- Returnează valoarea asociată cu cheia specificată. Dacă cheia nu este găsită, aceasta revine null.
  • getOrDefault()- Returnează valoarea asociată cu cheia specificată. Dacă cheia nu este găsită, returnează valoarea implicită specificată.

De exemplu,

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

Ieșire

 LinkedHashMap: (Unu = 1, Doi = 2, Trei = 3) Număr returnat: 3 Număr returnat: 5 

Elemente LinkedHashMap eliminate

  • remove(key) - returnează și elimină de pe hartă intrarea asociată cu cheia specificată
  • remove(key, value) - elimină intrarea de pe hartă numai dacă cheia specificată este mapată pentru a fi valoarea specificată și returnează o valoare booleană

De exemplu,

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

Ieșire

LinkedHashMap: (One = 1, Two = 2, Three = 3) Valoare eliminată: 2 Este eliminată intrarea (Three = 3)? True Actualizat LinkedHashMap: (Unu = 1)

Alte metode ale LinkedHashMap

Metodă Descriere
clear() elimină toate intrările de pe hartă
containsKey() verifică dacă harta conține cheia specificată și returnează o valoare booleană
containsValue() verifică dacă harta conține valoarea specificată și returnează o valoare booleană
size() returnează dimensiunea hărții
isEmpty() verifică dacă harta este goală și returnează o valoare booleană

LinkedHashMap vs. HashMap

Atât interfața cât LinkedHashMapși instrumentele sunt HashMapimplementate Map. Cu toate acestea, există unele diferențe între ele.

  • LinkedHashMapmenține o listă dublă legată intern. Datorită acestui fapt, menține ordinea de inserare a elementelor sale.
  • LinkedHashMapClasa necesită mai mult de stocare decât HashMap. Acest lucru se datorează faptului că LinkedHashMapmenține listele legate intern.
  • Performanța lui LinkedHashMapeste mai lentă decât HashMap.

Articole interesante...