În acest tutorial, vom afla despre clasa Java LinkedHashMap și operațiunile sale cu ajutorul unor exemple.
LinkedHashMap
Clasa cadrului colecțiilor Java oferă tabelul hash și legate punerea în aplicare lista cu interfața hărții.
LinkedHashMap
Interfaț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ă : LinkedHashMap
Clasa 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ă true
este 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
LinkedHashMap
Clasa 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țiikeySet()
- returnează un set de toate tastele hărțiivalues()
- 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 revinenull
.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 HashMap
implementate Map
. Cu toate acestea, există unele diferențe între ele.
LinkedHashMap
menține o listă dublă legată intern. Datorită acestui fapt, menține ordinea de inserare a elementelor sale.LinkedHashMap
Clasa necesită mai mult de stocare decâtHashMap
. Acest lucru se datorează faptului căLinkedHashMap
menține listele legate intern.- Performanța lui
LinkedHashMap
este mai lentă decâtHashMap
.