Java HashMap (s příklady)

V tomto tutoriálu se pomocí příkladů dozvíme o třídě Java HashMap a jejích různých operacích.

HashMapTřída sbírek rámce Java poskytuje funkce datové struktury hash tabulky.

Ukládá prvky do párů klíč / hodnota . Zde jsou klíče jedinečné identifikátory používané k přidružení každé hodnoty na mapě.

HashMapTřída implementuje rozhraní mapy.

Implementace Java HashMap

Vytvořte HashMap

Abychom mohli vytvořit hashovací mapu, musíme java.util.HashMapnejprve importovat balíček. Jakmile balíček naimportujeme, můžeme v jazyce Java vytvářet hashmapy.

 // hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();

Ve výše uvedeném kódu jsme vytvořili hashmapu pojmenovaná čísla. Zde K představuje typ klíče a V představuje typ hodnot. Například,

 HashMap numbers = new HashMap();

Zde je druh klíče je Stringa typ hodnot je Integer.

Příklad 1: Vytvoření HashMap v Javě

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap languages = new HashMap(); // add elements to hashmap languages.put("Java", 8); languages.put("JavaScript", 1); languages.put("Python", 3); System.out.println("HashMap: " + languages); ) )

Výstup

 HashMap: (Java = 8, JavaScript = 1, Python = 3)

Ve výše uvedeném příkladu jsme vytvořili HashMappojmenované jazyky.

Zde jsme použili put()metodu pro přidání prvků do hashmapy. Další informace o put()metodě se dozvíme dále v tomto kurzu.

Základní operace na Java HashMap

HashMapTřída nabízí celou řadu možností k provádění různých operací na hashmaps. V tomto kurzu se podíváme na některé běžně používané operace se seznamy polí:

  • Přidat prvky
  • Přístupové prvky
  • Změnit prvky
  • Odeberte prvky

1. Přidejte prvky do HashMap

Chcete-li do hashmapy přidat jeden prvek, použijeme put()metodu HashMaptřídy. Například,

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create a hashmap HashMap numbers = new HashMap(); System.out.println("Initial HashMap: " + numbers); // put() method to add elements numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("HashMap after put(): " + numbers); ) )

Výstup

 Initial HashMap: () HashMap after put (): (One = 1, Two = 2, Three = 3)

Ve výše uvedeném příkladu jsme vytvořili HashMappojmenovaná čísla. Zde jsme použili put()metodu k přidání prvků k číslům.

Všimněte si prohlášení,

 numbers.put("One", 1);

Zde předáváme metodě Stringhodnotu One jako klíč a Integerhodnotu 1 jako hodnotu put().

Doporučené četby

  • Java HashMap put ()
  • Java HashMap putAll ()
  • Java HashMap putIfAbsent ()

2. Přístup k prvkům HashMap

get()Metodu můžeme použít pro přístup k hodnotě z hashmapy. Například,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // get() method to get value String value = languages.get(1); System.out.println("Value at index 1: " + value); ) )

Výstup

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Hodnota v indexu 1: Java

Ve výše uvedeném příkladu si všimněte výrazu

 languages.get(1);

Zde get()metoda bere klíč jako svůj argument a vrací odpovídající hodnotu přidruženou k klíči.

Můžeme také přístup k klíče , hodnoty a klíč / hodnota páry HashMap as výhledem nastavit pomocí keySet(), values()a entrySet()metod, resp. Například,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // return set view of keys // using keySet() System.out.println("Keys: " + languages.keySet()); // return set view of values // using values() System.out.println("Values: " + languages.values()); // return set view of key/value pairs // using entrySet() System.out.println("Key/Value mappings: " + languages.entrySet()); ) )

Výstup

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Klíče: (1, 2, 3) Hodnoty: (Java, Python, JavaScript) Mapování klíč / hodnota: (1 = Java, 2 = Python, 3 = JavaScript )

Ve výše uvedeném příkladu jsme vytvořili hashmapu pojmenovanou jazyky. Zde přistupujeme ke klíčům , hodnotám a mapování klíčů / hodnot z hashmapy.

Doporučené četby

  • Java HashMap get ()
  • Java Hashmap getOrDefault ()
  • Sada Java HashMap keySet ()
  • Hodnoty Java HashMap ()
  • Java HashMap entrySet ()

3. Změňte hodnotu HashMap

replace()Metodu můžeme použít ke změně hodnoty spojené s klíčem v hashmapě. Například,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("Original HashMap: " + languages); // change element with key 2 languages.replace(2, "C++"); System.out.println("HashMap using replace(): " + languages); ) )

Výstup

 Původní HashMap: (1 = Java, 2 = Python, 3 = JavaScript) HashMap pomocí replace (): (1 = Java, 2 = C ++, 3 = JavaScript)

Ve výše uvedeném příkladu jsme vytvořili hashmapu pojmenovanou jazyky. Všimněte si výrazu,

 languages.replace(2, "C++");

Zde měníme hodnotu, na kterou odkazuje klíč 2, s novou hodnotou C ++.

HashMapTřída také poskytuje některé variace replace()metody. Chcete-li se dozvědět více, navštivte

  • Java HashMap replace ()
  • Java HashMap replaceAll ()

4. Odeberte prvky HashMap

K odebrání prvků z hashmapy můžeme použít metodu remove (). Například,

 import java.util.HashMap; class Main ( public static void main(String() args) ( HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // remove element associated with key 2 String value = languages.remove(2); System.out.println("Removed value: " + value); System.out.println("Updated HashMap: " + languages); ) )

Výstup

 HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Odstraněná hodnota: Python Aktualizován HashMap: (1 = Java, 3 = JavaScript)

Zde remove()metoda bere klíč jako svůj parametr. Poté vrátí hodnotu přidruženou k klíči a odebere položku .

Můžeme také odstranit záznam pouze za určitých podmínek. Například,

 remove(2, "C++");

Here, the remove() method only removes the entry if the key 2 is associated with the value C++. Since 2 is not associated with C++, it doesn't remove the entry.

To learn more, visit Java HashMap remove().

Other Methods of HashMap

Method Description
clear() removes all mappings from the HashMap
compute() computes a new value for the specified key
computeIfAbsent() computes value if a mapping for the key is not present
computeIfPresent() computes a value for mapping if the key is present
merge() merges the specified mapping to the HashMap
clone() makes the copy of the HashMap
containsKey() checks if the specified key is present in Hashmap
containsValue() checks if Hashmap contains the specified value
size() returns the number of items in HashMap
isEmpty() checks if the Hashmap is empty

Iterate through a HashMap

To iterate through each entry of the hashmap, we can use Java for-each loop. We can iterate through keys only, vales only, and key/value mapping. For example,

 import java.util.HashMap; import java.util.Map.Entry; class Main ( public static void main(String() args) ( // create a HashMap HashMap languages = new HashMap(); languages.put(1, "Java"); languages.put(2, "Python"); languages.put(3, "JavaScript"); System.out.println("HashMap: " + languages); // iterate through keys only System.out.print("Keys: "); for (Integer key : languages.keySet()) ( System.out.print(key); System.out.print(", "); ) // iterate through values only System.out.print("Values: "); for (String value : languages.values()) ( System.out.print(value); System.out.print(", "); ) // iterate through key/value entries System.out.print("Entries: "); for (Entry entry : languages.entrySet()) ( System.out.print(entry); System.out.print(", "); ) ) )

Output

 HashMap: (1=Java, 2=Python, 3=JavaScript) Keys: 1, 2, 3, Values: Java, Python, JavaScript, Entries: 1=Java, 2=Python, 3=JavaScript,

Note that we have used the Map.Entry in the above example. It is the nested class of the Map interface that returns a view (elements) of the map.

We first need to import the java.util.Map.Entry package in order to use this class.

This nested class returns a view (elements) of the map.

Creating HashMap from Other Maps

In Java, we can also create a hashmap from other maps. For example,

 import java.util.HashMap; import java.util.TreeMap; class Main ( public static void main(String() args) ( // create a treemap TreeMap evenNumbers = new TreeMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("TreeMap: " + evenNumbers); // create hashmap from the treemap HashMap numbers = new HashMap(evenNumbers); numbers.put("Three", 3); System.out.println("HashMap: " + numbers); ) )

Output

 TreeMap: (Four=4, Two=2) HashMap: (Two=2, Three=3, Four=4)

In the above example, we have created a TreeMap named evenNumbers. Notice the expression,

 numbers = new HashMap(evenNumbers)

Here, we are creating a HashMap named numbers using the TreeMap. To learn more about treemap, visit Java TreeMap.

Note: While creating a hashmap, we can include optional parameters: capacity and load factor. For example,

 HashMap numbers = new HashMap(8, 0.6f);

Here,

  • 8 (capacity is 8) - This means it can store 8 entries.
  • 0.6f (load factor is 0.6) - This means whenever our hash table is filled by 60%, the entries are moved to a new hash table double the size of the original hash table.

V případě, že volitelné parametry nejsou použity, pak výchozí kapacita bude 16 a výchozí faktor zatížení bude 0.75 .

Zajímavé články...