Ebben az oktatóanyagban példák segítségével megismerhetjük a Java LinkedHashMap osztályt és annak működését.
A LinkedHashMap
Java gyűjtemények keretrendszerének osztálya biztosítja a Map felület hash tábláját és összekapcsolt listájának megvalósítását.
Az LinkedHashMap
interfész kibővíti a HashMap osztályt, hogy bejegyzéseit hash-táblában tárolja. Belsőleg az összes bejegyzése között kétszeresen linkelt listát vezet a bejegyzések rendezése érdekében.
LinkedHashMap létrehozása
Összekapcsolt hashmap létrehozásához java.util.LinkedHashMap
először importálnunk kell a csomagot. A csomag importálása után a következőképpen hozhatunk létre összekapcsolt hasmapokat a Java-ban.
// LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f);
A fenti kódban létrehoztunk egy összekapcsolt hashmap számokat.
Itt,
- Kulcs - egyedi azonosító, amelyet a térkép minden elemének (értékének) társításához használnak
- Érték - elemek, amelyeket a térkép kulcsai társítanak
Figyeld meg a részt new LinkedHashMap(8, 0.6)
. Itt az első paraméter a kapacitás , a második pedig a loadFactor .
- kapacitás - A kapcsolt hashmap kapacitása 8. Ez azt jelenti, hogy 8 bejegyzést tud tárolni.
- loadFactor - A kapcsolt hashmap terhelési tényezője 0,6. Ez azt jelenti, hogy ha a hash-térképünket 60% -kal kitölti, a bejegyzések egy új hash-táblába kerülnek, amely duplája az eredeti hash-tábla méretének.
Alapértelmezett kapacitás és terhelési tényező
Lehetőség van összekapcsolt hashmap létrehozására anélkül, hogy meghatároznánk annak kapacitását és terhelési tényezőjét. Például,
//LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap();
Alapértelmezés szerint,
- a kapcsolt hashmap kapacitása 16 lesz
- a terhelési tényező 0,75 lesz
Megjegyzés : Az LinkedHashMap
osztály lehetővé teszi számunkra a bejegyzések sorrendjének meghatározását is. Például
// LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder);
Itt az accessOrder logikai érték. Alapértelmezett értéke false
. Ebben az esetben a hivatkozott hashmap bejegyzéseit beillesztési sorrendjük alapján rendezik.
Ha azonban true
accessOrder néven kerül átadásra , akkor a csatolt hashmap bejegyzéseit a legkevésbé hozzáférésről a legutóbb hozzáférésre rendeli.
LinkedHashMap létrehozása más térképekből
Így hozhatunk létre egy összekapcsolt hashmap-ot, amely tartalmazza a többi térkép összes elemét.
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); ) )
Kimenet
LinkedHashMap1: (Kettő = 2, Négy = 4) LinkedHashMap2: (Kettő = 2, Négy = 4, Három = 3)
A LinkedHashMap módszerei
Az LinkedHashMap
osztály olyan módszereket biztosít, amelyek lehetővé teszik számunkra a térképen különböző műveletek végrehajtását.
Elemek beszúrása a LinkedHashMap oldalra
put()
- beszúrja a térképbe a megadott kulcs / érték leképezéstputAll()
- beilleszti a megadott térkép összes bejegyzését erre a térképreputIfAbsent()
- beilleszti a megadott kulcs / érték leképezést a térképbe, ha a megadott kulcs nincs a térképen
Például,
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); ) )
Kimenet
Eredeti LinkedHashMap: (kettő = 2, négy = 4) frissítve LinkedHashMap: (kettő = 2, négy = 4, hat = 6) új LinkedHashMap: (egy = 1, kettő = 2, négy = 4, hat = 6)
Hozzáférés a LinkedHashMap elemekhez
1. A entrySet (), keySet () és értékek () használatával
entrySet()
- visszaadja a térkép összes kulcs / érték leképezésének halmazátkeySet()
- a térkép összes kulcsának egy készletét adja visszavalues()
- a térkép összes értékének halmazát adja vissza
Például,
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()); ) )
Kimenet
LinkedHashMap: (egy = 1, kettő = 2, három = 3) kulcs / érték leképezések: (egy = 1, kettő = 2, három = 3) kulcsok: (egy, kettő, három) értékek: (1, 2, 3) )
2. A get () és a getOrDefault () használata
get()
- A megadott kulccsal társított értéket adja vissza. Ha a kulcs nem található, akkor visszatérnull
.getOrDefault()
- A megadott kulccsal társított értéket adja vissza. Ha a kulcs nem található, akkor a megadott alapértelmezett értéket adja vissza.
Például,
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); ) )
Kimenet
LinkedHashMap: (Egy = 1, Két = 2, Három = 3) Visszaszolgáltatott szám: 3 Visszaszolgáltatott szám: 5
LinkedHashMap elemek eltávolítva
remove(key)
- visszatér és eltávolítja a térképről a megadott kulccsal társított bejegyzéstremove(key, value)
- csak akkor távolítja el a bejegyzést a térképről, ha a megadott kulcs megfeleltetve van a megadott értéknek, és logikai értéket ad vissza
Például,
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); ) )
Kimenet
LinkedHashMap: (Egy = 1, Kettő = 2, Három = 3) Eltávolított érték: 2 Eltávolították a bejegyzést (Három = 3)? Igaz frissített LinkedHashMap: (Egy = 1)
A LinkedHashMap egyéb módszerei
Módszer | Leírás |
---|---|
clear() | eltávolítja az összes bejegyzést a térképről |
containsKey() | ellenőrzi, hogy a térkép tartalmazza-e a megadott kulcsot, és logikai értéket ad vissza |
containsValue() | ellenőrzi, hogy a térkép tartalmazza-e a megadott értéket, és logikai értéket ad vissza |
size() | visszaadja a térkép méretét |
isEmpty() | ellenőrzi, hogy a térkép üres-e, és logikai értéket ad vissza |
LinkedHashMap Vs. HashMap
Az interfész mind a, mind LinkedHashMap
pedig HashMap
megvalósítja Map
. Vannak azonban különbségek közöttük.
LinkedHashMap
belül kétszeresen összekapcsolt listát vezet. Emiatt fenntartja elemeinek beszúrási sorrendjét.- Az
LinkedHashMap
osztály több tárhelyet igényel, mintHashMap
. Ennek oka,LinkedHashMap
hogy a kapcsolt listákat belsőleg tartja fenn. - A teljesítmény
LinkedHashMap
lassabb, mintHashMap
.