„Java LinkedHashMap“

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java LinkedHashMap“ klasę ir jos operacijas.

LinkedHashMapJava“ kolekcijų sistemos klasėje pateikiama maišos lentelė ir susietojo sąrašo žemėlapio sąsajos įgyvendinimas.

LinkedHashMapSąsaja išplečia HashMap klasė saugoti savo įrašus maišos lentelę. Savo viduje jis tvarko dvigubai susietą visų savo įrašų sąrašą, kad užsakytų įrašus.

„LinkedHashMap“ sukūrimas

Norėdami sukurti susietą „hashmap“, pirmiausia turime importuoti java.util.LinkedHashMappaketą. Kai importuosime paketą, štai kaip galime sukurti susietus „hashmaps“ „Java“.

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

Pirmiau pateiktame kode mes sukūrėme susietą hashmap pavadintą skaičių.

Čia

  • Raktas - unikalus identifikatorius, naudojamas susieti kiekvieną žemėlapio elementą (vertę)
  • Vertė - elementai, susieti su klavišais žemėlapyje

Atkreipkite dėmesį į dalį new LinkedHashMap(8, 0.6). Čia pirmasis parametras yra talpa, o antrasis - „ loadFactor“ .

  • talpa - šio susieto hashmap talpa yra 8. Tai reiškia, kad jame galima saugoti 8 įrašus.
  • „loadFactor“ - šio susieto „hashmap“ apkrovos koeficientas yra 0,6. Tai reiškia, kad kai mūsų maišos žemėlapis užpildomas 60%, įrašai perkeliami į naują maišos lentelę, kurios dydis yra dvigubai didesnis nei originalios maišos lentelės.

Numatytasis pajėgumas ir apkrovos koeficientas

Galite sukurti susietą „hashmap“ neapibrėždami jo talpos ir apkrovos faktoriaus. Pavyzdžiui,

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

Pagal numatytuosius nustatymus

  • susieto hashmap talpa bus 16
  • apkrovos koeficientas bus 0,75

Pastaba : LinkedHashMapklasė taip pat leidžia mums apibrėžti jos įrašų tvarką. Pavyzdžiui

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

Čia „accessOrder“ yra loginė reikšmė. Numatytoji jo vertė yra false. Šiuo atveju susieto hashmap įrašai yra tvarkomi pagal jų įterpimo tvarką.

Tačiau, jei jis truebus perduotas kaip „accessOrder“, susieto hashmapo įrašai bus tvarkomi nuo mažiausiai neseniai pasiekto iki paskutinio aplankyto.

„LinkedHashMap“ kūrimas iš kitų žemėlapių

Štai kaip mes galime sukurti susietą „hashmap“, kuriame yra visi kitų žemėlapių elementai.

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

Rezultatas

 „LinkedHashMap1“: (du = 2, keturi = 4) „LinkedHashMap2“: (du = 2, keturi = 4, trys = 3) 

„LinkedHashMap“ metodai

LinkedHashMapKlasė suteikia metodus, kurie leidžia mums atlikti įvairius darbus žemėlapyje.

Įterpti elementus į „LinkedHashMap“

  • put() - įterpia nurodytą raktų / reikšmių žemėlapį į žemėlapį
  • putAll() - įterpia visus įrašus iš nurodyto žemėlapio į šį žemėlapį
  • putIfAbsent() - įterpia nurodytą rakto / vertės atvaizdavimą į žemėlapį, jei nurodyto rakto žemėlapyje nėra

Pavyzdžiui,

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

Rezultatas

 Originalus „LinkedHashMap“: (du = 2, keturi = 4) atnaujintas „LinkedHashMap“: (du = 2, keturi = 4, šeši = 6) naujas „LinkedHashMap“: (vienas = 1, du = 2, keturi = 4, šeši = 6) 

Pasiekite „LinkedHashMap“ elementus

1. Naudodami „entrySet“ (), „keySet“ () ir reikšmes ()

  • entrySet() - pateikia visų žemėlapio raktų / reikšmių susiejimo rinkinį
  • keySet() - grąžina visų žemėlapio raktų rinkinį
  • values() - pateikia visų žemėlapio reikšmių rinkinį

Pavyzdžiui,

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

Rezultatas

 „LinkedHashMap“: (vienas = 1, du = 2, trys = 3) raktų / reikšmių susiejimai: (vienas = 1, du = 2, trys = 3) raktai: (vienas, du, trys) vertės: (1, 2, 3) ) 

2. Naudojant get () ir getOrDefault ()

  • get()- grąžina su nurodytu raktu susietą vertę. Jei raktas nerastas, jis grįžta null.
  • getOrDefault()- grąžina su nurodytu raktu susietą vertę. Jei raktas nerastas, jis grąžina nurodytą numatytąją vertę.

Pavyzdžiui,

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

Rezultatas

 „LinkedHashMap“: (vienas = 1, du = 2, trys = 3) grąžintas skaičius: 3 grąžintas skaičius: 5 

Pašalinti „LinkedHashMap“ elementai

  • remove(key) - grąžina ir pašalina įrašą, susietą su nurodytu raktu, iš žemėlapio
  • remove(key, value) - pašalina įrašą iš žemėlapio tik tuo atveju, jei nurodytas raktas susiejamas su nurodyta reikšme ir pateikia loginę vertę

Pavyzdžiui,

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

Rezultatas

„LinkedHashMap“: (Vienas = 1, Du = 2, Trys = 3) Pašalinta reikšmė: 2 Ar įrašas (Trys = 3) pašalintas? Tiesa atnaujinta „LinkedHashMap“: (vienas = 1)

Kiti „LinkedHashMap“ metodai

Metodas apibūdinimas
clear() pašalina visus įrašus iš žemėlapio
containsKey() patikrina, ar žemėlapyje yra nurodytas raktas, ir pateikia loginę vertę
containsValue() patikrina, ar žemėlapyje yra nurodyta reikšmė, ir pateikia loginę vertę
size() pateikia žemėlapio dydį
isEmpty() patikrina, ar žemėlapis tuščias, ir pateikia loginę vertę

„LinkedHashMap Vs.“ „HashMap“

Tiek LinkedHashMapir HashMapįgyvendina Mapsąsaja. Tačiau tarp jų yra tam tikrų skirtumų.

  • LinkedHashMapišlaiko dvigubai susietą sąrašą viduje. Dėl to jis palaiko savo elementų įterpimo tvarką.
  • LinkedHashMapKlasė reikalauja daugiau vietos nei HashMap. Taip yra todėl, LinkedHashMapkad susietus sąrašus palaiko viduje.
  • Spektaklis LinkedHashMapyra lėtesnis nei HashMap.

Įdomios straipsniai...