Java LinkedHashMap

Šajā apmācībā mēs uzzināsim par Java LinkedHashMap klasi un tās darbībām ar piemēru palīdzību.

LinkedHashMapJava kolekcijas ietvaros klase nodrošina hash tabulu un saistīta saraksta ieviešanu Karte interfeisu.

LinkedHashMapInterfeiss paplašina HashMap klasi glabāt savus ierakstus hash tabulā. Tā iekšēji uztur divkārši saistītu sarakstu starp visiem ierakstiem, lai pasūtītu ierakstus.

LinkedHashMap izveide

Lai izveidotu saistītu hashmap, mums vispirms ir jāimportē java.util.LinkedHashMappakete. Pēc pakotnes importēšanas šeit mēs varam izveidot saistītus hashmaps Java.

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

Iepriekš minētajā kodā mēs esam izveidojuši saistītu hashmap nosaukumu numurus.

Šeit,

  • Atslēga - unikāls identifikators, ko izmanto, lai katru elementu (vērtību) saistītu kartē
  • Vērtība - elementi, kas saistīti ar atslēgām kartē

Ievērojiet daļu new LinkedHashMap(8, 0.6). Pirmais parametrs ir kapacitāte, bet otrais parametrs - loadFactor .

  • ietilpība - šī saistītā hashmap ietilpība ir 8. Tas nozīmē, ka tajā var saglabāt 8 ierakstus.
  • loadFactor - šī saistītā hashmap slodzes koeficients ir 0,6. Tas nozīmē, ka ikreiz, kad mūsu jaukšanas karte ir aizpildīta par 60%, ieraksti tiek pārvietoti uz jaunu jaukšanas tabulu, kas ir divreiz lielāka par sākotnējās jaukšanas tabulas lielumu.

Noklusējuma jauda un slodzes koeficients

Ir iespējams izveidot saistītu hashmap, nenosakot tā jaudu un slodzes koeficientu. Piemēram,

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

Pēc noklusējuma,

  • saistītā hashmap jauda būs 16
  • slodzes koeficients būs 0,75

Piezīme : LinkedHashMapKlase ļauj mums arī definēt savu ierakstu secību. Piemēram

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

Šeit accessOrder ir Būla vērtība. Tās noklusējuma vērtība ir false. Šajā gadījumā saites hashmap ieraksti tiek sakārtoti, pamatojoties uz to ievietošanas secību.

Tomēr, ja tas truetiek nodots kā accessOrder, saistītā hashmap ieraksti tiks sakārtoti no vismazāk piekļūtā līdz nesen piekļūtajai.

LinkedHashMap izveide no citām kartēm

Lūk, kā mēs varam izveidot saistītu hashmap, kas satur visus citu karšu elementus.

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

Rezultāts

 LinkedHashMap1: (divi = 2, četri = 4) LinkedHashMap2: (divi = 2, četri = 4, trīs = 3) 

LinkedHashMap metodes

LinkedHashMapKlase nodrošina metodes, kas ļauj mums, lai veiktu dažādas darbības kartē.

Ievietojiet elementus vietnē LinkedHashMap

  • put() - ievieto kartē norādīto atslēgu / vērtību kartēšanu
  • putAll() - ievieto šajā kartē visus ierakstus no norādītās kartes
  • putIfAbsent() - ievieto kartē norādīto atslēgu / vērtību kartēšanu, ja norādītās atslēgas kartē nav

Piemēram,

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

Rezultāts

 Sākotnējais LinkedHashMap: (divi = 2, četri = 4) Atjaunināts LinkedHashMap: (divi = 2, četri = 4, seši = 6) jauns LinkedHashMap: (viens = 1, divi = 2, četri = 4, seši = 6) 

Piekļūstiet LinkedHashMap elementiem

1. Izmantojot entrySet (), keySet () un vērtības ()

  • entrySet() - atgriež visu kartes atslēgu / vērtību kartēšanas kopu
  • keySet() - atgriež visu kartes taustiņu kopu
  • values() - atgriež visu kartes vērtību kopu

Piemēram,

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

Rezultāts

 LinkedHashMap: (viens = 1, divi = 2, trīs = 3) atslēgu / vērtību kartējumi: (viens = 1, divi = 2, trīs = 3) taustiņi: (viens, divi, trīs) vērtības: (1, 2, 3 ) 

2. get () un getOrDefault () izmantošana

  • get()- atgriež vērtību, kas saistīta ar norādīto atslēgu. Ja atslēga nav atrasta, tā atgriežas null.
  • getOrDefault()- atgriež vērtību, kas saistīta ar norādīto atslēgu. Ja atslēga nav atrasta, tā atgriež norādīto noklusējuma vērtību.

Piemēram,

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

Rezultāts

 LinkedHashMap: (Viens = 1, Divi = 2, Trīs = 3) Atgrieztais skaits: 3 Atgrieztais numurs: 5 

Noņemti LinkedHashMap elementi

  • remove(key) - atgriež un noņem no kartes ar norādīto atslēgu saistīto ierakstu
  • remove(key, value) - noņem ierakstu no kartes tikai tad, ja norādītā atslēga ir kartēta par norādīto vērtību un atgriež Būla vērtību

Piemēram,

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

Rezultāts

LinkedHashMap: (Viens = 1, Divi = 2, Trīs = 3) Noņemtā vērtība: 2 Vai ieraksts (Trīs = 3) ir noņemts? Patiesa atjauninātā LinkedHashMap: (viens = 1)

Citas LinkedHashMap metodes

Metode Apraksts
clear() noņem visus ierakstus no kartes
containsKey() pārbauda, ​​vai kartē ir norādīta atslēga, un atgriež Būla vērtību
containsValue() pārbauda, ​​vai kartē ir norādītā vērtība, un atgriež Būla vērtību
size() atgriež kartes lielumu
isEmpty() pārbauda, ​​vai karte ir tukša, un atgriež Būla vērtību

LinkedHashMap Vs. HashMap

Gan LinkedHashMapun HashMapievieš Mapsaskarni. Tomēr starp tām pastāv dažas atšķirības.

  • LinkedHashMapiekšēji uztur divkārši saistītu sarakstu. Pateicoties tam, tā saglabā savu elementu ievietošanas kārtību.
  • LinkedHashMapKlases prasa vairāk atmiņas nekā HashMap. Tas notiek tāpēc, ka LinkedHashMapiekšēji uztur saistītos sarakstus.
  • Veiktspēja LinkedHashMapir lēnāka nekā HashMap.

Interesanti raksti...