Java LinkedHashMap

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 LinkedHashMapJava 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 LinkedHashMapinterfé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.LinkedHashMapelő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 LinkedHashMaposztá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 trueaccessOrder 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 LinkedHashMaposztá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ést
  • putAll() - beilleszti a megadott térkép összes bejegyzését erre a térképre
  • putIfAbsent() - 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át
  • keySet() - a térkép összes kulcsának egy készletét adja vissza
  • values() - 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ér null.
  • 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ést
  • remove(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 LinkedHashMappedig HashMapmegvalósítja Map. Vannak azonban különbségek közöttük.

  • LinkedHashMapbelül kétszeresen összekapcsolt listát vezet. Emiatt fenntartja elemeinek beszúrási sorrendjét.
  • Az LinkedHashMaposztály több tárhelyet igényel, mint HashMap. Ennek oka, LinkedHashMaphogy a kapcsolt listákat belsőleg tartja fenn.
  • A teljesítmény LinkedHashMaplassabb, mint HashMap.

érdekes cikkek...