Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java LinkedHashMap“ klasę ir jos operacijas.
„ LinkedHashMap
Java“ kolekcijų sistemos klasėje pateikiama maišos lentelė ir susietojo sąrašo žemėlapio sąsajos įgyvendinimas.
LinkedHashMap
Są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.LinkedHashMap
paketą. 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 : LinkedHashMap
klasė 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 true
bus 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
LinkedHashMap
Klasė 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įžtanull
.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ėlapioremove(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 LinkedHashMap
ir HashMap
įgyvendina Map
sąsaja. Tačiau tarp jų yra tam tikrų skirtumų.
LinkedHashMap
išlaiko dvigubai susietą sąrašą viduje. Dėl to jis palaiko savo elementų įterpimo tvarką.LinkedHashMap
Klasė reikalauja daugiau vietos neiHashMap
. Taip yra todėl,LinkedHashMap
kad susietus sąrašus palaiko viduje.- Spektaklis
LinkedHashMap
yra lėtesnis neiHashMap
.