logo

HashMap v Javě

V Javě, HashMap je součástí kolekce Java od verze Java 1.2. Tato třída se nachází v java.util balík. Poskytuje základní implementaci mapového rozhraní Java. HashMap v Javě ukládá data do párů (Key, Value) a můžete k nim přistupovat pomocí indexu jiného typu (např. Integer). Jeden objekt se používá jako klíč (index) k jinému objektu (hodnotě). Pokud se pokusíte vložit duplicitní klíč do HashMap, nahradí prvek odpovídajícího klíče.

Co je HashMap?

Java HashMap je podobný HashTable , ale je nesynchronizovaný. Umožňuje uložit i nulové klíče, ale měl by existovat pouze jeden objekt nulového klíče a může existovat libovolný počet hodnot null. Tato třída neposkytuje žádné záruky ohledně pořadí mapy. Chcete-li použít tuto třídu a její metody, musíte provést import java.util.HashMap balíčku nebo jeho nadtřídy.

Obsah



Příklady Java HashMap

Níže je uvedena implementace příkladu Java HashMap:

Jáva




// Java program to illustrate HashMap class> // of java.util package> // Importing HashMap class> import> java.util.HashMap;> // Main class> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Create an empty hash map by declaring object> >// of string and integer type> >HashMap map =>new> HashMap();> >// Adding elements to the Map> >// using standard put() method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> >// Print size and content of the Map> >System.out.println(>'Size of map is:- '> >+ map.size());> >// Printing elements in object of Map> >System.out.println(map);> >// Checking if a key is present and if> >// present, print value by passing> >// random element> >if> (map.containsKey(>'vishal'>)) {> >// Mapping> >Integer a = map.get(>'vishal'>);> >// Printing value for the corresponding key> >System.out.println(>'value for key'> >+>' 'vishal' is:- '> + a);> >}> >}> }>

>

>

Výstup

Size of map is:- 3 {vaibhav=20, vishal=10, sachin=30} value for key 'vishal' is:- 10>

HashMap Prohlášení

public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>

Parametry:

Vyžaduje dva parametry, a to následující:

  • Typ klíčů spravovaných touto mapou
  • Typ mapovaných hodnot

Poznámka: K eys a value nemohou být primitivní datový typ. Klíč v Hashmap je platný, pokud je implementován metody hashCode() a equals(). , měl by být také neměnný (neměnný vlastní objekt), aby hashcode a rovnost zůstaly konstantní. Hodnota v hashmap může být jakákoliv třída obalu, vlastní objekty, pole, jakýkoli typ odkazu nebo dokonce null .

Například : Hashmap může mít pole jako hodnotu, ale ne jako klíč.

HashMap v Java implementuje Serializovatelné , Klonovatelné , Mapa rozhraní.Java HashMap rozšiřuje Abstraktní mapa třída. Přímé podtřídy jsou LinkedHashMap a PrinterStateReasons .

Hierarchie Java HashMap

Hierarchie HashMap v Javě

Charakteristika Java HashMap

HashMap je datová struktura, která se používá k ukládání a načítání hodnot na základě klíčů. Některé z klíčových vlastností hashmap zahrnují:

  • Rychlý přístupový čas : HashMaps poskytují konstantní časový přístup k prvkům, což znamená, že vyhledávání a vkládání prvků je velmi rychlé, obvykle O(1) časovou složitost.
  • Používá hashovací funkci : HashMaps používá hashovací funkci k mapování klíčů na indexy v poli. To umožňuje rychlé vyhledání hodnot na základě klíčů.
  • Ukládá páry klíč–hodnota: Každý prvek v HashMap se skládá z páru klíč-hodnota. Klíč se používá k vyhledání související hodnoty.
  • Podporuje nulové klíče a hodnoty : HashMaps umožňují nulové hodnoty a klíče. To znamená, že k uložení hodnoty lze použít klíč null a ke klíči lze přiřadit hodnotu null.
  • Není objednáno: HashMapy nejsou seřazeny, což znamená, že pořadí, ve kterém jsou prvky přidávány do mapy, není zachováno. LinkedHashMap je však variantou HashMap, která zachovává pořadí vložení.
  • Umožňuje duplikáty : HashMaps umožňují duplicitní hodnoty, ale ne duplicitní klíče. Pokud je přidán duplicitní klíč, předchozí hodnota spojená s klíčem se přepíše.
  • Nit-nebezpečné : HashMaps nejsou bezpečné pro vlákna, což znamená, že pokud ke stejné hashmapě přistupuje více vláken současně, může to vést k nekonzistentnosti dat. Pokud je vyžadována bezpečnost vlákna, lze použít ConcurrentHashMap.
  • Kapacita a vytížení : HashMapy mají kapacitu, což je počet prvků, které mohou pojmout, a faktor zatížení, což je míra toho, jak plná může být hashmapa před změnou velikosti.

Vytváření HashMap v Javě

Pojďme pochopit, jak můžeme vytvořit HashMap v Javě s příkladem uvedeným níže:

Jáva




// Java Program to Create> // HashMap in Java> import> java.util.HashMap;> // Driver Class> public> class> ExampleHashMap {> >// main function> >public> static> void> main(String[] args) {> > >// Create a HashMap> >HashMap hashMap =>new> HashMap();> > >// Add elements to the HashMap> >hashMap.put(>'John'>,>25>);> >hashMap.put(>'Jane'>,>30>);> >hashMap.put(>'Jim'>,>35>);> > >// Access elements in the HashMap> >System.out.println(hashMap.get(>'John'>));> >// Output: 25> > >// Remove an element from the HashMap> >hashMap.remove(>'Jim'>);> > >// Check if an element is present in the HashMap> >System.out.println(hashMap.containsKey(>'Jim'>));> >// Output: false> > >// Get the size of the HashMap> >System.out.println(hashMap.size());> >// Output: 2> >}> }>

>

>

Výstup

25 false 2>

Java HashMap konstruktory

HashMap poskytuje 4 konstruktory a modifikátor přístupu každého z nich je veřejný, které jsou uvedeny takto:

  1. HashMap()
  2. HashMap (int initialCapacity)
  3. HashMap(int initialCapacity, float loadFactor)
  4. HashMap (mapa mapy)

Nyní diskutujeme o výše uvedených konstruktorech jeden po druhém spolu s jejich implementací pomocí čistých programů Java.

1. HashMap()

Je to výchozí konstruktor, který vytváří instanci HashMap s počáteční kapacitou 16 a faktorem zatížení 0,75.

Syntax:

HashMap hm = new HashMap();>

Příklad

Jáva




// Java program to Demonstrate the HashMap() constructor> // Importing basic required classes> import> java.io.*;> import> java.util.*;> // Main class> // To add elements to HashMap> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >HashMap hm1 =>new> HashMap();> >// Initialization of a HashMap using Generics> >HashMap hm2> >=>new> HashMap();> >// Adding elements using put method> >// Custom input elements> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >hm2.put(>4>,>'four'>);> >hm2.put(>5>,>'five'>);> >hm2.put(>6>,>'six'>);> >// Print and display mapping of HashMap 1> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >// Print and display mapping of HashMap 2> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Výstup

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}>

2. HashMap (int initialCapacity)

Vytvoří instanci HashMap s a specifikovaná počáteční kapacita a faktor zatížení 0,75.

Syntax:

HashMap hm = new HashMap(int initialCapacity);>

Příklad

Jáva




// Java program to Demonstrate> // HashMap(int initialCapacity) Constructor> // Importing basic classes> import> java.io.*;> import> java.util.*;> // Main class> // To add elements to HashMap> class> AddElementsToHashMap {> >// Main driver method> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >HashMap hm1 =>new> HashMap(>10>);> >// Initialization of a HashMap using Generics> >HashMap hm2> >=>new> HashMap(>2>);> >// Adding elements to object of HashMap> >// using put method> >// HashMap 1> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >// HashMap 2> >hm2.put(>4>,>'four'>);> >hm2.put(>5>,>'five'>);> >hm2.put(>6>,>'six'>);> >// Printing elements of HashMap 1> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >// Printing elements of HashMap 2> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

panel nástrojů pro rychlý přístup aplikace word
>

>

Výstup

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}>

3. HashMap(int initialCapacity, float loadFactor)

Vytvoří instanci HashMap se zadanou počáteční kapacitou a zadaným faktorem zatížení.

Syntax:

HashMap hm = new HashMap(int initialCapacity, float loadFactor);>

Příklad

Jáva




// Java program to Demonstrate> // HashMap(int initialCapacity,float loadFactor) Constructor> // Importing basic classes> import> java.io.*;> import> java.util.*;> // Main class> // To add elements to HashMap> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// No need to mention the generic type twice> >HashMap hm1> >=>new> HashMap(>5>,>0>.75f);> >// Initialization of a HashMap using Generics> >HashMap hm2> >=>new> HashMap(>3>,>0>.5f);> >// Add Elements using put() method> >// Custom input elements> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >hm2.put(>4>,>'four'>);> >hm2.put(>5>,>'five'>);> >hm2.put(>6>,>'six'>);> >// Print and display elements in object of hashMap 1> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >// Print and display elements in object of hashMap 2> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Výstup

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}>

4. HashMap (mapa mapy)

Vytvoří instanci HashMap se stejným mapováním jako zadaná mapa.

HashMap hm = new HashMap (mapa mapy);

Jáva




// Java program to demonstrate the> // HashMap(Map map) Constructor> import> java.io.*;> import> java.util.*;> class> AddElementsToHashMap {> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >Map hm1 =>new> HashMap();> >// Add Elements using put method> >hm1.put(>1>,>'one'>);> >hm1.put(>2>,>'two'>);> >hm1.put(>3>,>'three'>);> >// Initialization of a HashMap> >// using Generics> >HashMap hm2> >=>new> HashMap(hm1);> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> > >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

>

Výstup

Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {1=one, 2=two, 3=three}>

Provádění různých operací na HashMap

1. Přidávání prvků v HashMap v Javě

Abychom do mapy přidali prvek, můžeme použít dát() metoda. Pořadí vložení se však v Hashmap nezachová. Interně je pro každý prvek vygenerován samostatný hash a prvky jsou indexovány na základě tohoto hashu, aby byl efektivnější.

Jáva




// Java program to add elements> // to the HashMap> import> java.io.*;> import> java.util.*;> class> AddElementsToHashMap {> >public> static> void> main(String args[])> >{> >// No need to mention the> >// Generic type twice> >HashMap hm1 =>new> HashMap();> >// Initialization of a HashMap> >// using Generics> >HashMap hm2> >=>new> HashMap();> >// Add Elements using put method> >hm1.put(>1>,>'Geeks'>);> >hm1.put(>2>,>'For'>);> >hm1.put(>3>,>'Geeks'>);> >hm2.put(>1>,>'Geeks'>);> >hm2.put(>2>,>'For'>);> >hm2.put(>3>,>'Geeks'>);> >System.out.println(>'Mappings of HashMap hm1 are : '> >+ hm1);> >System.out.println(>'Mapping of HashMap hm2 are : '> >+ hm2);> >}> }>

>

hiba bukhari

>

Výstup

Mappings of HashMap hm1 are : {1=Geeks, 2=For, 3=Geeks} Mapping of HashMap hm2 are : {1=Geeks, 2=For, 3=Geeks}>

2. Změna prvků v HashMap v Javě

Po přidání prvků, pokud chceme prvek změnit, lze to provést opětovným přidáním prvku s dát() metoda. Vzhledem k tomu, že prvky v mapě jsou indexovány pomocí klíčů, lze hodnotu klíče změnit jednoduchým vložením aktualizované hodnoty klíče, který chceme změnit.

Jáva




// Java program to change> // elements of HashMap> import> java.io.*;> import> java.util.*;> class> ChangeElementsOfHashMap {> >public> static> void> main(String args[])> >{> >// Initialization of a HashMap> >HashMap hm> >=>new> HashMap();> >// Change Value using put method> >hm.put(>1>,>'Geeks'>);> >hm.put(>2>,>'Geeks'>);> >hm.put(>3>,>'Geeks'>);> >System.out.println(>'Initial Map '> + hm);> >hm.put(>2>,>'For'>);> >System.out.println(>'Updated Map '> + hm);> >}> }>

>

>

Výstup

Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}>

3. Odebrání prvku z Java HashMap

Abychom odstranili prvek z mapy, můžeme použít odstranit() metoda. Tato metoda převezme hodnotu klíče a odstraní mapování pro klíč z této mapy, pokud je v mapě přítomen.

Jáva




// Java program to remove> // elements from HashMap> import> java.io.*;> import> java.util.*;> class> RemoveElementsOfHashMap{> >public> static> void> main(String args[])> >{> >// Initialization of a HashMap> >Map hm> >=>new> HashMap();> >// Add elements using put method> >hm.put(>1>,>'Geeks'>);> >hm.put(>2>,>'For'>);> >hm.put(>3>,>'Geeks'>);> >hm.put(>4>,>'For'>);> >// Initial HashMap> >System.out.println(>'Mappings of HashMap are : '> >+ hm);> >// remove element with a key> >// using remove method> >hm.remove(>4>);> >// Final HashMap> >System.out.println(>'Mappings after removal are : '> >+ hm);> >}> }>

>

>

Výstup

Mappings of HashMap are : {1=Geeks, 2=For, 3=Geeks, 4=For} Mappings after removal are : {1=Geeks, 2=For, 3=Geeks}>

4. Procházení Java HashMap

Rozhraní Iterator můžeme použít k procházení libovolnou strukturou Collection Framework. Protože iterátory pracují s jedním typem dat, používáme Entry k rozlišení dvou samostatných typů do kompatibilního formátu. Poté pomocí metody next() vytiskneme položky HashMap.

Jáva




// Java program to traversal a> // Java.util.HashMap> import> java.util.HashMap;> import> java.util.Map;> public> class> TraversalTheHashMap {> >public> static> void> main(String[] args)> >{> >// initialize a HashMap> >HashMap map =>new> HashMap();> >// Add elements using put method> >map.put(>'vishal'>,>10>);> >map.put(>'sachin'>,>30>);> >map.put(>'vaibhav'>,>20>);> >// Iterate the map using> >// for-each loop> >for> (Map.Entry e : map.entrySet())> >System.out.println(>'Key: '> + e.getKey()> >+>' Value: '> + e.getValue());> >}> }>

>

>

Výstup

Key: vaibhav Value: 20 Key: vishal Value: 10 Key: sachin Value: 30>

Složitost HashMap v Javě

HashMap poskytuje konstantní časovou složitost pro základní operace, získat a dát, pokud je hashovací funkce správně napsána a správně rozmístí prvky mezi kbelíky. Iterace přes HashMap závisí na kapacitě HashMap a počtu párů klíč–hodnota. V podstatě je to přímo úměrné kapacitě + velikosti. Kapacita je počet bucketů v HashMap. Není tedy dobrý nápad držet zpočátku v HashMapu vysoký počet bucketů.

Metody

Časová složitost

Vesmírná složitost

Přidávání prvků v HashMap

O(1)

NA)

Odebrání prvku z HashMap

O(1)

NA)

Extrahování prvku z Javy

O(1)

NA)

Důležité vlastnosti HashMap

Chcete-li získat přístup k hodnotě, musíte znát její klíč. HashMap je známá jako HashMap, protože používá techniku ​​zvanou hashování. Hašování je technika převodu velkého řetězce na malý řetězec, který představuje stejný řetězec. Kratší hodnota pomáhá při indexování a rychlejším vyhledávání. HashSet také interně používá HashMap.
Několik důležitých funkcí HashMap je:

  • HashMap je součástí balíčku java.util.
  • HashMap rozšiřuje abstraktní třídu AbstractMap, která také poskytuje neúplnou implementaci rozhraní Map.
  • Rovněž implementuje a Klonovatelné a Serializovatelné rozhraní. K a V ve výše uvedené definici představují klíč a hodnotu.
  • HashMap neumožňuje duplicitní klíče, ale umožňuje duplicitní hodnoty. To znamená, že jeden klíč nemůže obsahovat více než 1 hodnotu, ale více než 1 klíč může obsahovat jednu hodnotu.
  • HashMap umožňuje také klíč null, ale pouze jednou a více hodnot null.
  • Tato třída neposkytuje žádné záruky ohledně pořadí mapy; zejména nezaručuje, že pořadí zůstane v průběhu času konstantní. Je zhruba podobný HashTable, ale je nesynchronizovaný.

Vnitřní struktura HashMap

Interně HashMap obsahuje pole Node a uzel je reprezentován jako třída, která obsahuje 4 pole:

  1. int hash
  2. K klíč
  3. hodnota V
  4. Další uzel

Je vidět, že uzel obsahuje odkaz na svůj vlastní objekt. Jde tedy o propojený seznam.

HashMap:

Java HashMap

Uzel:

node_hash_map

Výkon HashMap

Výkon HashMap závisí na 2 parametrech, které jsou pojmenovány takto:

  1. Počáteční kapacita
  2. Faktor zatížení

1. Počáteční kapacita – Je to kapacita HashMap v době jejího vytvoření (Je to počet bucketů, které může HashMap pojmout, když je HashMap vytvořena). V Javě je to zpočátku 2^4=16, což znamená, že může obsahovat 16 párů klíč–hodnota.

2. Faktor zatížení – Je to procentuální hodnota kapacity, po které má být kapacita Hashmap zvýšena (Je to procentuální naplnění bucketů, po kterých proběhne Rehashing). V Javě je to ve výchozím nastavení 0,75f, což znamená, že přehánění proběhne po naplnění 75 % kapacity.

3. Práh – Je to součin faktoru zatížení a počáteční kapacity. V Javě je ve výchozím nastavení (16 * 0,75 = 12). To znamená, že přehašování probíhá po vložení 12 párů klíč–hodnota do HashMap.

4. Rehashing – Je to proces zdvojnásobení kapacity HashMap poté, co dosáhne svého prahu. V Javě HashMap pokračuje v přehazování (ve výchozím nastavení) v následujícím pořadí – 2^4, 2^5, 2^6, 2^7, …. již brzy.

Pokud je počáteční kapacita udržována vyšší, přehánění nebude nikdy provedeno. Ale jeho udržováním na vyšší úrovni se zvyšuje časová složitost iterace. Měl by být tedy zvolen velmi chytře, aby se zvýšil výkon. Pro nastavení počáteční kapacity je třeba vzít v úvahu očekávaný počet hodnot. Nejobecněji upřednostňovaná hodnota faktoru zatížení je 0,75, což poskytuje dobrý poměr mezi náklady na čas a prostor. Hodnota faktoru zatížení se pohybuje mezi 0 a 1.

Poznámka: Počínaje verzí Java 8 začala Java používat pro řetězení Self Balancing BST namísto propojeného seznamu. Výhodou samovyvažovacího bst je, že v nejhorším případě (když se každý klíč mapuje do stejného slotu) získáme čas vyhledávání O(Log n).

Synchronizovaná HashMap

Jak se říká, HashMap je nesynchronizovaná, tj. může k ní přistupovat více vláken současně. Pokud k této třídě přistupuje více vláken současně a alespoň jedno s ní strukturálně manipuluje, je nutné ji externě synchronizovat. To se provádí synchronizací nějakého objektu, který zapouzdřuje mapu. Pokud žádný takový objekt neexistuje, lze jej obalit kolem Collections.synchronizedMap(), aby byla HashMap synchronizována a zabránilo se náhodnému nesynchronizovanému přístupu. Jako v následujícím příkladu:

Map m = Collections.synchronizedMap(new HashMap(...));>

Nyní je mapa m synchronizována. Iterátory této třídy jsou rychlé při selhání, pokud je po vytvoření iterátoru provedena jakákoliv úprava struktury, a to jakýmkoli způsobem kromě metody odstranění iterátoru. Při selhání iterátoru vyvolá výjimku ConcurrentModificationException.

Aplikace HashMap:

HashMap je především implementace hashování. Je to užitečné, když potřebujeme efektivní implementaci operací vyhledávání, vkládání a mazání. Podívejte se prosím na aplikace hashování pro detaily.

Metody v HashMapassociate

  • K – Typ kláves na mapě.
  • V – Typ hodnot mapovaných v mapě.

Metoda

Popis

Průhledná() Odstraní všechna mapování z této mapy.
klon() Vrátí mělkou kopii této instance HashMap: samotné klíče a hodnoty nejsou klonovány.
compute (klíč K, BiFunction ? super V,? rozšiřuje V> remappingFunction) Pokusí se vypočítat mapování pro zadaný klíč a jeho aktuální mapovanou hodnotu (nebo null, pokud neexistuje žádné aktuální mapování).
computeIfAbsent(klávesa K, funkce super K,? rozšiřuje V> mappingFunction) Pokud zadaný klíč ještě není přidružen k hodnotě (nebo je mapován na hodnotu null), pokusí se vypočítat jeho hodnotu pomocí dané mapovací funkce a vloží ji do této mapy, pokud není null.
computeIfPresent (klávesa K, BiFunction ? super V,? rozšiřuje V> remappingFunction) Pokud je hodnota pro zadaný klíč přítomna a není nulová, pokusí se vypočítat nové mapování dané klíčem a jeho aktuální mapovanou hodnotou.
obsahuje klíč (objektový klíč) Vrátí hodnotu true, pokud tato mapa obsahuje mapování pro zadaný klíč.
obsahujeValue(hodnota objektu) Vrátí hodnotu true, pokud tato mapa mapuje jeden nebo více klíčů na zadanou hodnotu.
entrySet() Vrátí nastavení zobrazení mapování obsažených v této mapě.
get (klíč objektu) Vrátí hodnotu, na kterou je zadaný klíč mapován, nebo hodnotu null, pokud tato mapa neobsahuje žádné mapování pro klíč.
je prázdný() Vrátí hodnotu true, pokud tato mapa neobsahuje žádná mapování párů klíč–hodnota.
keySet() Vrátí zobrazení sady klíčů obsažených v této mapě.
merge (klíč K, hodnota V, BiFunction ? super V,? rozšiřuje V> remappingFunction) Pokud zadaný klíč ještě není přidružen k hodnotě nebo je přidružen k hodnotě null, přiřaďte jej k dané jiné hodnotě.
put (klíč K, hodnota V) Přidruží zadanou hodnotu k zadanému klíči v této mapě.
dát vše (mapa m) Zkopíruje všechna mapování ze zadané mapy do této mapy.
odstranit (klíč objektu) Odstraní mapování pro zadaný klíč z této mapy, pokud existuje.
velikost() Vrátí počet mapování párů klíč–hodnota v této mapě.
hodnoty() Vrátí pohled kolekce hodnot obsažených v této mapě.

Metody zděděné z třídy java.util.AbstractMap

METODA

POPIS

rovná se()

Porovná zadaný objekt s touto mapou pro dosažení rovnosti.

hashCode()

Vrátí hodnotu hash kódu pro tuto mapu.

toString()

Vrátí řetězcovou reprezentaci této mapy.

Metody zděděné z rozhraní java.util.Map

METODA

POPIS

rovná se() Porovná zadaný objekt s touto mapou pro dosažení rovnosti.

pro každého (akce BiConsumer)

Provede danou akci pro každý záznam v této mapě, dokud nebudou zpracovány všechny záznamy nebo akce vyvolá výjimku.
getOrDefault (klíč objektu, V defaultValue) Vrátí hodnotu, na kterou je zadaný klíč mapován, nebo defaultValue, pokud tato mapa neobsahuje žádné mapování pro klíč.
hashCode() Vrátí hodnotu hash kódu pro tuto mapu.
putIfAbsent (klíč K, hodnota V) Pokud zadaný klíč ještě není přidružen k hodnotě (nebo je namapován na hodnotu null), přidruží jej k dané hodnotě a vrátí hodnotu null, jinak vrátí aktuální hodnotu.
odstranit (klíč objektu, hodnota objektu) Odebere položku pro zadaný klíč pouze v případě, že je aktuálně namapován na zadanou hodnotu.
nahradit (klíč K, hodnota V) Nahradí položku pro zadaný klíč pouze v případě, že je aktuálně namapován na nějakou hodnotu.
nahradit (klíč K, V stará hodnota, V nová hodnota) Nahradí položku pro zadaný klíč, pouze pokud je aktuálně namapován na zadanou hodnotu.

nahradit vše (funkce BiFunction)

Nahradí hodnotu každé položky výsledkem vyvolání dané funkce u této položky, dokud nebudou zpracovány všechny položky nebo funkce vyvolá výjimku.

Výhody Java HashMap

  • Rychlé vyhledání: HashMaps poskytují neustálý časový přístup k prvkům, což znamená, že vyhledávání a vkládání prvků je velmi rychlé.
  • Efektivní úložiště : HashMaps používají hašovací funkci k mapování klíčů na indexy v poli. To umožňuje rychlé vyhledávání hodnot na základě klíčů a efektivní ukládání dat.
  • Flexibilita : HashMaps umožňují nulové klíče a hodnoty a mohou ukládat páry klíč–hodnota jakéhokoli datového typu.
  • Snadné použití : HashMaps mají jednoduché rozhraní a lze je snadno implementovat v Javě.
  • Vhodné pro velké soubory dat : HashMaps zvládnou velké soubory dat bez zpomalení.

Nevýhody Java HashMap

  • Neuspořádané : HashMaps nejsou seřazeny, což znamená, že pořadí, ve kterém jsou prvky přidávány do mapy, není zachováno.
  • Není bezpečný pro vlákna : HashMaps nejsou bezpečné pro vlákna, což znamená, že pokud ke stejné hashmapě přistupuje více vláken současně, může to vést k nekonzistentnosti dat.
  • Výkon se může zhoršit : V některých případech, pokud není funkce hash správně implementována nebo pokud je faktor zatížení příliš vysoký, může dojít ke snížení výkonu HashMap.
  • Složitější než pole nebo seznamy : HashMaps může být složitější na pochopení a použití než jednoduchá pole nebo seznamy, zejména pro začátečníky.
  • Vyšší využití paměti : Protože HashMaps používají základní pole, mohou využívat více paměti než jiné datové struktury, jako jsou pole nebo seznamy. To může být nevýhodou, pokud jde o využití paměti.
  • Hashmap vs Treemap
  • Hashmap vs HashTable
  • Nedávné články o Java HashMap

Nejčastější dotazy k Java HashMap

1. Co je HashMap v Javě?

HashMap v Javě je třída z frameworku kolekce, která do ní může ukládat páry klíč-hodnota.

2. Proč používat HashMap v Javě?

HashMap v Javě se používá pro ukládání párů klíč-hodnota, kde je každý klíč jedinečný.

3. Jaká je výhoda HashMapu?

HashMap se používá, protože poskytuje funkce jako:

  • Rychlé vyhledání
  • Efektivní úložiště
  • Flexibilní použití
  • Snadné použití
  • Vhodné pro velké soubory dat