Jáva HashMap třída implementuje rozhraní Map, které nám umožňuje pro uložení páru klíče a hodnoty , kde klíče by měly být jedinečné. Pokud se pokusíte vložit duplicitní klíč, nahradí prvek odpovídajícího klíče. Je snadné provádět operace pomocí indexu klíčů, jako je aktualizace, mazání atd. Třída HashMap se nachází vjava.utilbalík.
HashMap v Javě je jako starší třída Hashtable, ale není synchronizovaná. Umožňuje nám ukládat i nulové prvky, ale měl by existovat pouze jeden nulový klíč. Od Java 5 je označován jakoHashMap, kde K znamená klíč a V hodnotu. Zdědí třídu AbstractMap a implementuje rozhraní Map.
Body k zapamatování
- Java HashMap obsahuje hodnoty založené na klíči.
- Java HashMap obsahuje pouze jedinečné klíče.
- Java HashMap může mít jeden klíč null a více hodnot null.
- Java HashMap není synchronizovaná.
- Java HashMap neudržuje žádný pořádek.
- Počáteční výchozí kapacita třídy Java HashMap je 16 s faktorem zatížení 0,75.
Hierarchie třídy HashMap
Jak je znázorněno na obrázku výše, třída HashMap rozšiřuje třídu AbstractMap a implementuje rozhraní Map.
Deklarace třídy HashMap
Podívejme se na deklaraci třídy java.util.HashMap.
volání funkce js z html
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Parametry třídy HashMap
Podívejme se na parametry třídy java.util.HashMap.
Konstruktoři třídy Java HashMap
Konstruktér | Popis |
---|---|
HashMap() | Používá se k vytvoření výchozí HashMap. |
HashMap (mapa m) | Používá se k inicializaci hash mapy pomocí prvků daného objektu Map m. |
HashMap (int kapacita) | Slouží k inicializaci kapacity hash mapy na danou celočíselnou hodnotu, kapacitu. |
HashMap (kapacita int, plovoucí faktor zatížení) | Používá se k inicializaci kapacity a faktoru zatížení hash mapy pomocí jejích argumentů. |
Metody třídy Java HashMap
Metoda | Popis |
---|---|
void clear() | Používá se k odstranění všech mapování z této mapy. |
boolean isEmpty() | Používá se k návratu true, pokud tato mapa neobsahuje žádná mapování párů klíč–hodnota. |
Object clone() | Používá se k vrácení mělké kopie této instance HashMap: samotné klíče a hodnoty nejsou klonovány. |
Set entrySet() | Používá se k návratu zobrazení kolekce mapování obsažených v této mapě. |
Set keySet() | Používá se k návratu nastaveného pohledu na klíče obsažené v této mapě. |
V put (klíč objektu, hodnota objektu) | Slouží k vložení záznamu do mapy. |
void putAll (mapa mapy) | Slouží k vložení zadané mapy do mapy. |
V putIfAbsent (klíč K, hodnota V) | Zadanou hodnotu se zadaným klíčem vloží do mapy pouze v případě, že ještě není zadaná. |
V odstranit (klíč objektu) | Používá se k odstranění položky pro zadaný klíč. |
booleovské odstranění (klíč objektu, hodnota objektu) | Odebere z mapy zadané hodnoty s přidruženými zadanými klíči. |
V compute (klíč K, BiFunction remappingFunction) | Používá se k výpočtu mapování pro zadaný klíč a jeho aktuální mapovanou hodnotu (nebo null, pokud neexistuje žádné aktuální mapování). |
V computeIfAbsent (klávesa K, funkce mapování funkcí) | Používá se k výpočtu její hodnoty pomocí dané mapovací funkce, pokud zadaný klíč ještě není spojen s hodnotou (nebo je namapován na hodnotu null), a vloží ji do této mapy, pokud není null. |
V computeIfPresent (klávesa K, přemapování funkce BiFunction) | Používá se k výpočtu nového mapování daného klíče a jeho aktuální namapované hodnoty, pokud je hodnota pro zadaný klíč přítomna a není nulová. |
boolean obsahujeValue(hodnota objektu) | Tato metoda vrátí hodnotu true, pokud v mapě existuje nějaká hodnota rovna hodnotě, jinak vrátí hodnotu false. |
boolean obsahujeKey (klíč objektu) | Tato metoda vrátí hodnotu true, pokud v mapě existuje klíč rovný tomuto klíči, jinak vrátí hodnotu false. |
boolean rovná se (objekt o) | Používá se k porovnání zadaného objektu s mapou. |
void forEach (akce BiConsumer) | Provádí danou akci pro každý záznam v mapě, dokud nejsou zpracovány všechny záznamy nebo akce vyvolá výjimku. |
V get (klíč objektu) | Tato metoda vrátí objekt, který obsahuje hodnotu přidruženou ke klíči. |
V getOrDefault (klíč objektu, V defaultValue) | Vrátí hodnotu, na kterou je zadaný klíč mapován, nebo defaultValue, pokud mapa neobsahuje žádné mapování pro klíč. |
boolean isEmpty() | Tato metoda vrátí hodnotu true, pokud je mapa prázdná; vrátí false, pokud obsahuje alespoň jeden klíč. |
V merge (klíč K, hodnota V, funkce přemapování BiFunction) | Pokud zadaný klíč ještě není přidružen k hodnotě nebo je přidružen k hodnotě null, přidruží jej k dané jiné hodnotě. |
V nahradit (klíč K, hodnota V) | Nahradí zadanou hodnotu za zadaný klíč. |
booleovské nahrazení (klíč K, V stará hodnota, V nová hodnota) | Nahradí starou hodnotu novou hodnotou pro zadaný klíč. |
void nahradit vše (funkce BiFunction) | Nahradí hodnotu každé položky výsledkem vyvolání dané funkce na této položce, dokud nebudou zpracovány všechny položky nebo funkce vyvolá výjimku. |
Hodnoty sbírky () | Vrátí zobrazení kolekce hodnot obsažených v mapě. |
int size() | Tato metoda vrací počet záznamů v mapě. |
Příklad Java HashMap
Podívejme se na jednoduchý příklad HashMap pro uložení páru klíče a hodnoty.
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Otestujte to hned
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
V tomto příkladu ukládáme Integer jako klíč a String jako hodnotu, takže používámeHashMapjako typ. Thedát()metoda vloží prvky do mapy.
Abychom získali prvky klíče a hodnoty, měli bychom zavolat metody getKey() a getValue(). TheMapa.Vstuprozhraní obsahuje getKey() a getValue() metody. Měli bychom však zavolat metodu entrySet() rozhraní Map, abychom získali instanci Map.Entry.
Žádný duplicitní klíč na HashMap
V HashMap nemůžete ukládat duplicitní klíče. Pokud se však pokusíte uložit duplicitní klíč s jinou hodnotou, nahradí hodnotu.
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Otestujte to hned
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Příklad Java HashMap pro add() prvky
Zde vidíme různé způsoby vkládání prvků.
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
Příklad Java HashMap pro odstranění() prvků
Zde vidíme různé způsoby odstranění prvků.
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
Výstup:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
Příklad Java HashMap pro náhradu () prvků
Zde vidíme různé způsoby, jak nahradit prvky.
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
Rozdíl mezi HashSet a HashMap
HashSet obsahuje pouze hodnoty, zatímco HashMap obsahuje položku (klíč a hodnotu).
Java HashMap Příklad: Kniha
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Otestujte to hned
Výstup:
konverze typu java a casting
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
Související témata
Load Factor v HashMap
Práce s HashMap v Javě | Jak HashMap funguje
Rozdíl mezi HashMap a Hashtable
Jak seřadit HashMap podle hodnoty