U ovom uputstvu uz primjere ćemo naučiti o klasi Java LinkedHashMap i njezinim operacijama.
LinkedHashMap
Klasa Java zbirki okvira pruža hash tablicu i povezane provedbu popis Karta sučelje.
LinkedHashMap
Sučelje proširuje HashMap razred pohraniti svoje unose u hash tablici. Interno održava dvostruko povezan popis među svim svojim unosima kako bi ih naručio.
Stvaranje LinkedHashMap
Da bismo stvorili povezanu hash-kartu, prvo moramo uvesti java.util.LinkedHashMap
paket. Nakon što uvozimo paket, evo kako možemo stvoriti povezane hash-mape u Javi.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f);
U gornjem kodu stvorili smo povezano hashmapu s brojevima.
Ovdje,
- Ključ - jedinstveni identifikator koji se koristi za povezivanje svakog elementa (vrijednosti) na karti
- Vrijednost - elementi pridruženi ključevima na karti
Primijetite dio new LinkedHashMap(8, 0.6)
. Ovdje je prvi parametar kapacitet, a drugi parametar loadFactor .
- kapacitet - Kapacitet ovog povezanog hashmapa je 8. Što znači, može pohraniti 8 unosa.
- loadFactor - faktor opterećenja ovog povezanog hashmapa je 0,6. To znači da, kad god se naša hash karta ispuni za 60%, unosi se premještaju u novu hash tablicu dvostruke veličine izvorne hash tablice.
Zadani kapacitet i faktor opterećenja
Moguće je stvoriti povezanu hashmapu bez definiranja njenog kapaciteta i faktora opterećenja. Na primjer,
//LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap();
Prema zadanim postavkama,
- kapacitet povezanog hashmapa bit će 16
- faktor opterećenja iznosit će 0,75
Napomena : LinkedHashMap
Klasa nam također omogućuje definiranje redoslijeda unosa. Na primjer
// LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder);
Ovdje je accessOrder logička vrijednost. Njegova je zadana vrijednost false
. U ovom se slučaju unosi u povezanu hashmapu naručuju na temelju njihovog redoslijeda umetanja.
Međutim, ako true
se proslijedi kao accessOrder, unosi u povezanom hashmapi bit će poredani od najmanje nedavno pristupljenih do nedavno pristupljenih.
Stvaranje LinkedHashMap iz drugih karata
Evo kako možemo stvoriti povezanu hashmapu koja sadrži sve elemente drugih karata.
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); ) )
Izlaz
LinkedHashMap1: (Dvije = 2, Četiri = 4) LinkedHashMap2: (Dvije = 2, Četiri = 4, Tri = 3)
Metode LinkedHashMap
LinkedHashMap
Klasa pruža metode koje omogućuju nam da obavljaju različite operacije na karti.
Umetnite elemente u LinkedHashMap
put()
- na kartu ubacuje određeno mapiranje ključa / vrijednostiputAll()
- na ovu kartu ubacuje sve unose s navedene karteputIfAbsent()
- ubacuje navedeno mapiranje ključa / vrijednosti na kartu ako navedeni ključ nije prisutan na karti
Na primjer,
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); ) )
Izlaz
Izvorna LinkedHashMap: (Dvije = 2, Četiri = 4) Ažurirano LinkedHashMap: (Dvije = 2, Četiri = 4, Šest = 6) Nova LinkedHashMap: (Jedna = 1, Dvije = 2, Četiri = 4, Šest = 6)
Pristupite elementima LinkedHashMap
1. Korištenje entrySet (), keySet () i vrijednosti ()
entrySet()
- vraća skup svih mapiranja ključa / vrijednosti kartekeySet()
- vraća skup svih tipki kartevalues()
- vraća skup svih vrijednosti karte
Na primjer,
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()); ) )
Izlaz
LinkedHashMap: (One = 1, Two = 2, Three = 3) preslikavanja ključa / vrijednosti: (One = 1, Two = 2, Three = 3) Tipke: (One, Two, Three) Vrijednosti: (1, 2, 3 )
2. Korištenje get () i getOrDefault ()
get()
- Vraća vrijednost povezanu s navedenim ključem. Ako ključ nije pronađen, vraća senull
.getOrDefault()
- Vraća vrijednost povezanu s navedenim ključem. Ako ključ nije pronađen, vraća navedenu zadanu vrijednost.
Na primjer,
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); ) )
Izlaz
LinkedHashMap: (Jedan = 1, Dva = 2, Tri = 3) Vraćeni broj: 3 Vraćeni broj: 5
Uklonjeni elementi LinkedHashMap
remove(key)
- vraća i uklanja unos povezan s navedenim ključem s karteremove(key, value)
- uklanja unos s karte samo ako je navedeni ključ preslikana u navedenu vrijednost i vrati logičku vrijednost
Na primjer,
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); ) )
Izlaz
LinkedHashMap: (Jedan = 1, Dva = 2, Tri = 3) Uklonjena vrijednost: 2 Je li unos (Tri = 3) uklonjen? Istinski ažurirana LinkedHashMap: (Jedna = 1)
Ostale metode LinkedHashMap
Metoda | Opis |
---|---|
clear() | uklanja sve unose s karte |
containsKey() | provjerava sadrži li karta navedeni ključ i vraća logičku vrijednost |
containsValue() | provjerava sadrži li karta navedenu vrijednost i vraća logičku vrijednost |
size() | vraća veličinu karte |
isEmpty() | provjerava je li karta prazna i vraća li logičku vrijednost |
LinkedHashMap vs. HashMap
I su LinkedHashMap
i HashMap
implementira Map
sučelje. Međutim, postoje neke razlike među njima.
LinkedHashMap
interno održava dvostruko povezan popis. Zbog toga održava redoslijed umetanja svojih elemenata.LinkedHashMap
Klasa zahtijeva više prostora za pohranu odHashMap
. To je zato štoLinkedHashMap
interno održava povezane popise.- Performanse
LinkedHashMap
su sporije odHashMap
.