Java LinkedHashMap

U ovom uputstvu uz primjere ćemo naučiti o klasi Java LinkedHashMap i njezinim operacijama.

LinkedHashMapKlasa Java zbirki okvira pruža hash tablicu i povezane provedbu popis Karta sučelje.

LinkedHashMapSuč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.LinkedHashMappaket. 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 : LinkedHashMapKlasa 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 truese 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

LinkedHashMapKlasa 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 / vrijednosti
  • putAll() - na ovu kartu ubacuje sve unose s navedene karte
  • putIfAbsent() - 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 karte
  • keySet() - vraća skup svih tipki karte
  • values() - 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 se null.
  • 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 karte
  • remove(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 LinkedHashMapi HashMapimplementira Mapsučelje. Međutim, postoje neke razlike među njima.

  • LinkedHashMapinterno održava dvostruko povezan popis. Zbog toga održava redoslijed umetanja svojih elemenata.
  • LinkedHashMapKlasa zahtijeva više prostora za pohranu od HashMap. To je zato što LinkedHashMapinterno održava povezane popise.
  • Performanse LinkedHashMapsu sporije od HashMap.

Zanimljivi članci...