V tomto tutoriále sa pomocou príkladov dozvieme o triede Java HashMap a jej rôznych operáciách.
HashMap
Trieda zbierok rámca Java poskytuje funkcie dátové štruktúry hash tabuľky.
Ukladá prvky do párov kľúč / hodnota . Tu, kľúče sú jedinečné identifikátory spájať jednotlivé hodnoty na mape.
HashMap
Trieda implementuje rozhranie mapy.
![](https://cdn.wiki-base.com/7339188/java_hashmap_with_examples.png.webp)
Vytvorte HashMap
Aby sme vytvorili hashovaciu mapu, musíme najskôr importovať java.util.HashMap
balíček. Po importovaní balíka tu môžeme vytvárať hašovacie mapy v Jave.
// hashMap creation with 8 capacity and 0.6 load factor HashMap numbers = new HashMap();
Vo vyššie uvedenom kóde sme vytvorili hashmapu pomenovanú čísla. Tu K predstavuje typ kľúča a V predstavuje typ hodnôt. Napríklad,
HashMap numbers = new HashMap();
Tu je druh kľúča je String
a typ hodnôt je Integer
.
Príklad 1: Vytvorenie HashMap v Jave
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ýkon
HashMap: (Java = 8, JavaScript = 1, Python = 3)
Vo vyššie uvedenom príklade sme vytvorili HashMap
pomenované jazyky.
Tu sme použili put()
metódu na pridanie prvkov do hashmapy. Viac o put()
metóde sa dozvieme ďalej v tomto návode.
Základné operácie na Java HashMap
HashMap
Trieda ponúka celý rad možností na vykonávanie rôznych operácií na hashmaps. V tomto výučbe sa pozrieme na niektoré bežne používané operácie s zoznamom polí:
- Pridajte prvky
- Prístupové prvky
- Zmena prvkov
- Odstrániť prvky
1. Pridajte prvky do HashMap
Na pridanie jedného prvku do hashmapy použijeme put()
metódu HashMap
triedy. Naprí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ýkon
Počiatočná HashMap: () HashMap po vložení (): (Jeden = 1, Dva = 2, Tri = 3)
Vo vyššie uvedenom príklade sme vytvorili HashMap
pomenované čísla. Tu sme použili put()
metódu na pridanie prvkov k číslam.
Všimnite si vyhlásenie,
numbers.put("One", 1);
Tu odovzdávame metóde String
hodnotu One ako kľúč a Integer
hodnotu 1 ako hodnotu put()
.
Odporúčané čítania
- Java HashMap put ()
- Java HashMap putAll ()
- Java HashMap putIfAbsent ()
2. Prístup k prvkom HashMap
get()
Metódu môžeme použiť na prístup k hodnote z hashmapy. Naprí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ýkon
HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Hodnota v indexe 1: Java
Vo vyššie uvedenom príklade si všimnite výraz,
languages.get(1);
Tu get()
metóda berie kľúč ako svoj argument a vracia zodpovedajúcu hodnotu spojenú s kľúčom.
Môžeme tiež prístup k kľúče , hodnoty a kľúč / hodnota pary HashMap as výhľadom nastaviť pomocou keySet()
, values()
a entrySet()
metód, resp. Naprí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ýkon
HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Kľúče: (1, 2, 3) Hodnoty: (Java, Python, JavaScript) Mapovanie kľúča / hodnoty: (1 = Java, 2 = Python, 3 = JavaScript )
Vo vyššie uvedenom príklade sme vytvorili hashmapu s názvom jazyky. Tu pristupujeme ku kľúčom , hodnotám a mapovaniu kľúčov / hodnôt z hashmapy.
Odporúčané čítania
- Java HashMap get ()
- Java Hashmap getOrDefault ()
- Sada kľúčov Java HashMap ()
- Hodnoty Java HashMap ()
- Java HashMap entrySet ()
3. Zmeňte hodnotu HashMap
replace()
Metódu môžeme použiť na zmenu hodnoty spojenej s kľúčom v hashmape. Naprí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ýkon
Originálna HashMap: (1 = Java, 2 = Python, 3 = JavaScript) HashMap pomocou replace (): (1 = Java, 2 = C ++, 3 = JavaScript)
Vo vyššie uvedenom príklade sme vytvorili hashmapu pomenovanú jazyky. Všimnite si výraz,
languages.replace(2, "C++");
Tu meníme hodnotu, na ktorú odkazuje kláves 2, s novou hodnotou C ++.
HashMap
Trieda tiež poskytuje niektoré variácie replace()
metódy. Ak sa chcete dozvedieť viac, navštívte stránku
- Java HashMap replace ()
- Java HashMap replaceAll ()
4. Odstráňte prvky HashMap
Na odstránenie prvkov z hashmapy môžeme použiť metódu remove (). Naprí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ýkon
HashMap: (1 = Java, 2 = Python, 3 = JavaScript) Odstránená hodnota: Python Aktualizovaná HashMap: (1 = Java, 3 = JavaScript)
Tu remove()
metóda berie kľúč ako svoj parameter. Potom vráti hodnotu spojenú s kľúčom a záznam odstráni .
Položku môžeme tiež odstrániť iba za určitých podmienok. Napríklad,
remove(2, "C++");
Tu remove()
metóda odstráni záznam iba vtedy, ak je kľúč 2 spojený s hodnotou C ++ . Pretože 2 nie je spojený s C ++ , záznam sa neodstráni.
Ak sa chcete dozvedieť viac, navštívte Java HashMap remove ().
Ďalšie metódy HashMap
Metóda | Popis |
---|---|
jasný() | odstráni všetky mapovania z HashMap |
vypočítať () | vypočíta novú hodnotu pre zadaný kľúč |
computeIfAbsent () | počíta hodnotu, ak nie je k dispozícii mapovanie pre kľúč |
computeIfPresent () | počíta hodnotu pre mapovanie, ak je kľúč prítomný |
zlúčiť() | zlúči zadané mapovanie do HashMap |
klon () | urobí kópiu HashMap |
containsKey () | skontroluje, či sa zadaný kľúč nachádza v Hashmape |
containsValue () | skontroluje, či Hashmap obsahuje zadanú hodnotu |
veľkosť () | vráti počet položiek v priečinku HashMap |
je prázdny() | 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 prípade, že voliteľné parametre nie sú použité, potom predvolený kapacita bude 16 a východiskový faktor zaťaženia bude 0.75 .