Java LinkedHashMap

V tomto kurzu se pomocí příkladů dozvíme o třídě Java LinkedHashMap a jejích operacích.

LinkedHashMapTřída sbírek rámce Java poskytuje hash tabulky a propojené realizace seznamu rozhraní mapy.

LinkedHashMapRozhraní rozšiřuje třídu HashMap uchovávat své záznamy v tabulce hash. Interně udržuje seznam všech odkazů dvakrát spojený, aby si mohl své položky objednat.

Vytvoření LinkedHashMap

Aby bylo možné vytvořit propojenou hashmapu, musíme java.util.LinkedHashMapnejprve importovat balíček. Jakmile naimportujeme balíček, můžeme v Java vytvořit propojené hashmapy.

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

Ve výše uvedeném kódu jsme vytvořili propojenou hashmapu pojmenovaná čísla.

Tady,

  • Klíč - jedinečný identifikátor používaný k přidružení každého prvku (hodnoty) na mapě
  • Hodnota - prvky spojené s klíči na mapě

Všimněte si části new LinkedHashMap(8, 0.6). Zde je prvním parametrem kapacita a druhým parametrem je loadFactor .

  • kapacita - kapacita tohoto propojeného hashmapu je 8. To znamená, že může uložit 8 záznamů.
  • loadFactor - Faktor zatížení tohoto propojeného hashmapu je 0,6. To znamená, že kdykoli je naše hash mapa naplněna o 60%, položky se přesouvají do nové hash tabulky s dvojnásobnou velikostí původní hash tabulky.

Výchozí kapacita a faktor zatížení

Je možné vytvořit propojený hashmap bez definování jeho kapacity a faktoru zatížení. Například,

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

Ve výchozím stavu,

  • kapacita propojené hashmapy bude 16
  • činitel zatížení bude 0,75

Poznámka : LinkedHashMapTřída nám také umožňuje definovat pořadí jejích záznamů. Například

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

Zde je accessOrder logická hodnota. Jeho výchozí hodnota je false. V tomto případě jsou položky v propojené hashmapě řazeny na základě jejich objednávky.

Pokud trueje však předán jako accessOrder, položky v propojené hashmapě budou uspořádány od nejméně nedávno přistupujícího k nejvíce nedávno přistupovanému.

Vytváření LinkedHashMap z jiných map

Zde můžeme vytvořit propojenou hashmapu obsahující všechny prvky jiných map.

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

Výstup

 LinkedHashMap1: (dva = 2, čtyři = 4) LinkedHashMap2: (dva = 2, čtyři = 4, tři = 3) 

Metody LinkedHashMap

LinkedHashMapTřída poskytuje metody, které nám umožní provádět různé operace na mapě.

Vložit prvky do LinkedHashMap

  • put() - vloží zadané mapování klíče / hodnoty do mapy
  • putAll() - vloží všechny položky ze zadané mapy na tuto mapu
  • putIfAbsent() - vloží mapování určeného klíče / hodnoty do mapy, pokud zadaný klíč na mapě není

Například,

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

Výstup

 Původní LinkedHashMap: (dva = 2, čtyři = 4) Aktualizovaná LinkedHashMap: (dva = 2, čtyři = 4, šest = 6) Nová LinkedHashMap: (jeden = 1, dva = 2, čtyři = 4, šest = 6) 

Přístup k prvkům LinkedHashMap

1. Pomocí entrySet (), keySet () a hodnot ()

  • entrySet() - vrátí sadu všech mapování klíčů / hodnot mapy
  • keySet() - vrátí sadu všech klíčů mapy
  • values() - vrací sadu všech hodnot mapy

Například,

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

Výstup

 LinkedHashMap: (One = 1, Two = 2, Three = 3) Mapování klíčů / hodnot: (One = 1, Two = 2, Three = 3) Klávesy: (One, Two, Three) Hodnoty: (1, 2, 3 ) 

2. Používání get () a getOrDefault ()

  • get()- Vrátí hodnotu spojenou se zadaným klíčem. Pokud klíč nebyl nalezen, vrátí se null.
  • getOrDefault()- Vrátí hodnotu spojenou se zadaným klíčem. Pokud klíč nebyl nalezen, vrátí zadanou výchozí hodnotu.

Například,

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

Výstup

 LinkedHashMap: (Jeden = 1, Dva = 2, Tři = 3) Vrácené číslo: 3 Vrácené číslo: 5 

Odstraněny prvky LinkedHashMap

  • remove(key) - vrátí a odebere z mapy položku spojenou se zadaným klíčem
  • remove(key, value) - odstraní položku z mapy pouze v případě, že zadaný klíč byl namapován na zadanou hodnotu a vrátí logickou hodnotu

Například,

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

Výstup

LinkedHashMap: (Jeden = 1, Dva = 2, Tři = 3) Odstraněná hodnota: 2 Je položka (Tři = 3) odstraněna? Pravda aktualizovaná LinkedHashMap: (jedna = 1)

Další metody LinkedHashMap

Metoda Popis
clear() odstraní všechny položky z mapy
containsKey() zkontroluje, zda mapa obsahuje zadaný klíč a vrátí logickou hodnotu
containsValue() zkontroluje, zda mapa obsahuje zadanou hodnotu a vrátí logickou hodnotu
size() vrací velikost mapy
isEmpty() zkontroluje, zda je mapa prázdná, a vrátí logickou hodnotu

LinkedHashMap vs. HashMap

Obě LinkedHashMapa HashMapimplementuje Maprozhraní. Existují však mezi nimi určité rozdíly.

  • LinkedHashMapudržuje interně dvojitě propojený seznam. Z tohoto důvodu udržuje pořadí vkládání svých prvků.
  • LinkedHashMapTřída vyžaduje více úložného prostoru, než HashMap. Je to proto, že LinkedHashMapinterně udržuje propojené seznamy.
  • Výkon LinkedHashMapje pomalejší než HashMap.

Zajímavé články...