I Java, HashMap är en del av Javas samling sedan Java 1.2. Denna klass finns i java.util paket. Det ger den grundläggande implementeringen av kartgränssnittet för Java. HashMap i Java lagrar data i (nyckel, värde) par, och du kan komma åt dem med ett index av en annan typ (t.ex. ett heltal). Ett objekt används som nyckel (index) till ett annat objekt (värde). Om du försöker infoga dubblettnyckeln i HashMap kommer den att ersätta elementet i motsvarande nyckel.
Vad är HashMap?
Java HashMap liknar HashTable , men den är osynkroniserad. Det gör det möjligt att lagra null-nycklarna också, men det ska bara finnas ett null-nyckelobjekt och det kan finnas hur många nullvärden som helst. Denna klass ger inga garantier för ordningen på kartan. För att använda den här klassen och dess metoder måste du importera java.util.HashMap paket eller dess superklass.
Innehållsförteckning
- Vad är HashMap?
- Java HashMap exempel
- HashMap-deklaration
- Hierarki av Java HashMap
- Skapa HashMap i Java
- Java HashMap Constructors
- Utföra olika operationer på HashMap
- HashMaps komplexitet i Java
- Intern struktur för HashMap
- Fördelar och nackdelar med Java HashMap
Java HashMap exempel
Nedan är implementeringen av ett exempel på Java HashMap:
Java
// 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);> >}> >}> }> |
>
>
greibach normal formProduktion
Size of map is:- 3 {vaibhav=20, vishal=10, sachin=30} value for key 'vishal' is:- 10> HashMap Deklaration
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable>
Parametrar:
Det krävs två parametrar nämligen som följer:
- Typen av nycklar som underhålls av denna karta
- Typen av mappade värden
Obs: K eys och värde kan inte vara primitiv datatyp. Nyckeln i Hashmap är giltig om den implementeras hashCode() och equals()-metoden , bör det också vara oföränderligt (oföränderligt anpassat objekt ) så att hashkod och likhet förblir konstant. Värdet i hashmap kan vara vilken omslagsklass som helst, anpassade objekt, arrayer, vilken referenstyp som helst eller till och med null .
Till exempel : Hashmap kan ha array som värde men inte som nyckel.
HashMap i Java implementerar Serialiserbar , Klonbar , Karta gränssnitt.Java HashMap utökas Abstrakt karta klass. De direkta underklasserna är LinkedHashMap och PrinterStateReasons .
Hierarki av Java HashMap

Egenskaper för Java HashMap
En HashMap är en datastruktur som används för att lagra och hämta värden baserat på nycklar. Några av nyckelegenskaperna hos en hashmap inkluderar:
- Snabb åtkomsttid : HashMaps ger konstant tidsåtkomst till element, vilket innebär att hämtning och infogning av element är mycket snabb, vanligtvis O(1) tidskomplexitet.
- Använder hashfunktion : HashMaps använder en hash-funktion för att mappa nycklar till index i en array. Detta möjliggör en snabb uppslagning av värden baserat på nycklar.
- Lagrar nyckel-värdepar: Varje element i en HashMap består av ett nyckel-värdepar. Nyckeln används för att slå upp det tillhörande värdet.
- Stöder null-nycklar och värden : HashMaps tillåter nullvärden och nycklar. Detta innebär att en noll-nyckel kan användas för att lagra ett värde, och ett noll-värde kan associeras med en nyckel.
- Ej beställd: HashMaps är inte ordnade, vilket innebär att ordningen som element läggs till på kartan inte bevaras. Dock är LinkedHashMap en variant av HashMap som bevarar insättningsordningen.
- Tillåter dubbletter : HashMaps tillåter dubbletter av värden, men inte dubbletter av nycklar. Om en dubblettnyckel läggs till skrivs det tidigare värdet som är associerat med nyckeln över.
- Tråd-osäkra : HashMaps är inte trådsäkra, vilket innebär att om flera trådar får åtkomst till samma hashmap samtidigt kan det leda till datainkonsekvenser. Om trådsäkerhet krävs kan ConcurrentHashMap användas.
- Kapacitet och lastfaktor : HashMaps har en kapacitet, vilket är antalet element som den kan hålla, och en belastningsfaktor, som är måttet på hur full hashkartan kan vara innan den ändras storlek.
Skapa HashMap i Java
Låt oss förstå hur vi kan skapa HashMap i Java med ett exempel som nämns nedan:
Java
// 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> >}> }> |
>
>Produktion
25 false 2>
Java HashMap Constructors
HashMap tillhandahåller 4 konstruktörer och åtkomstmodifieraren för varje är offentlig som listas enligt följande:
- HashMap()
- HashMap(int initialCapacity)
- HashMap(int initialCapacity, float loadFactor)
- HashMap(Kartkarta)
Diskuterar nu ovanstående konstruktörer en efter en tillsammans med att implementera desamma med hjälp av rena Java-program.
1. HashMap()
Det är standardkonstruktören som skapar en instans av HashMap med en initial kapacitet på 16 och en belastningsfaktor på 0,75.
Syntax:
HashMap hm = new HashMap();>
Exempel
Java
// 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);> >}> }> |
>
>Produktion
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)
Det skapar en HashMap-instans med en specificerad initial kapacitet och lastfaktor på 0,75.
Syntax:
HashMap hm = new HashMap(int initialCapacity);>
Exempel
Java
// 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);> >}> }> |
>
>Produktion
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)
Den skapar en HashMap-instans med en specificerad initial kapacitet och specificerad belastningsfaktor.
Syntax:
HashMap hm = new HashMap(int initialCapacity, float loadFactor);>
Exempel
Java
// 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);> >}> }> |
>
>Produktion
Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {4=four, 5=five, 6=six}> 4. HashMap(Kartkarta)
Den skapar en instans av HashMap med samma mappningar som den angivna kartan.
HashMap hm = new HashMap(Map map);
Java
// 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);> >}> }> |
>
>Produktion
Mappings of HashMap hm1 are : {1=one, 2=two, 3=three} Mapping of HashMap hm2 are : {1=one, 2=two, 3=three}> Utföra olika operationer på HashMap
1. Lägga till element i HashMap i Java
För att lägga till ett element på kartan kan vi använda sätta() metod. Insättningsordningen behålls dock inte i Hashmap. Internt, för varje element, genereras en separat hash och elementen indexeras baserat på denna hash för att göra den mer effektiv.
Java
// 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);> >}> }> |
>
>Produktion
Mappings of HashMap hm1 are : {1=Geeks, 2=For, 3=Geeks} Mapping of HashMap hm2 are : {1=Geeks, 2=For, 3=Geeks}> 2. Ändra element i HashMap i Java
Efter att ha lagt till elementen om vi vill ändra elementet, kan det göras genom att återigen lägga till elementet med sätta() metod. Eftersom elementen i kartan indexeras med hjälp av nycklarna, kan nyckelns värde ändras genom att helt enkelt infoga det uppdaterade värdet för nyckeln som vi vill ändra.
Java
// 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);> >}> }> |
>
>Produktion
Initial Map {1=Geeks, 2=Geeks, 3=Geeks} Updated Map {1=Geeks, 2=For, 3=Geeks}> 3. Ta bort element från Java HashMap
För att ta bort ett element från kartan kan vi använda avlägsna() metod. Denna metod tar nyckelvärdet och tar bort mappningen för en nyckel från denna karta om den finns i kartan.
Java
// 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);> >}> }> |
>
>Produktion
Mappings of HashMap are : {1=Geeks, 2=For, 3=Geeks, 4=For} Mappings after removal are : {1=Geeks, 2=For, 3=Geeks}> 4. Traversering av Java HashMap
Vi kan använda Iterator-gränssnittet för att gå över vilken struktur som helst i Collection Framework. Eftersom Iterators arbetar med en typ av data använder vi Entry för att lösa de två separata typerna till ett kompatibelt format. Med hjälp av metoden next() skriver vi ut posterna i HashMap.
Java
// 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());> >}> }> |
>
>Produktion
Key: vaibhav Value: 20 Key: vishal Value: 10 Key: sachin Value: 30>
HashMaps komplexitet i Java
HashMap ger konstant tidskomplexitet för grundläggande operationer, get och put om hashfunktionen är korrekt skriven och den sprider elementen ordentligt bland hinkarna. Iteration över HashMap beror på kapaciteten hos HashMap och antalet nyckel-värdepar. I grund och botten är den direkt proportionell mot kapaciteten + storleken. Kapacitet är antalet hinkar i HashMap. Så det är inte en bra idé att ha ett stort antal hinkar i HashMap initialt.
| Metoder | Tidskomplexitet | Rymdkomplexitet |
|---|---|---|
| Lägga till element i HashMap | O(1) | PÅ) latex teckenstorlek |
| Ta bort element från HashMap | O(1) | PÅ) |
| Extrahera element från Java | O(1) | PÅ) |
Viktiga funktioner i HashMap
För att komma åt ett värde måste man känna till dess nyckel. HashMap är känt som HashMap eftersom det använder en teknik som kallas Hashing. Hashing är en teknik för att konvertera en stor sträng till en liten sträng som representerar samma sträng. Ett kortare värde hjälper till med indexering och snabbare sökningar. HashSet använder även HashMap internt.
Några viktiga funktioner i HashMap är:
- HashMap är en del av java.util-paketet.
- HashMap utökar en abstrakt klass AbstractMap som också ger en ofullständig implementering av kartgränssnittet.
- Den implementerar också en Klonbar och Serialiserbar gränssnitt. K och V i definitionen ovan representerar nyckel respektive värde.
- HashMap tillåter inte dubbletter av nycklar men tillåter dubbletter av värden. Det betyder att en enskild nyckel inte kan innehålla mer än ett värde men mer än en nyckel kan innehålla ett enda värde.
- HashMap tillåter också en null-nyckel men bara en gång och flera nollvärden.
- Denna klass ger inga garantier för kartans ordning; i synnerhet garanterar det inte att ordern kommer att förbli konstant över tiden. Den liknar ungefär HashTable men är osynkroniserad.
Intern struktur för HashMap
Internt innehåller HashMap en array av Node och en nod representeras som en klass som innehåller 4 fält:
- int hash
- K-nyckel
- V-värde
- Nod nästa
Det kan ses att noden innehåller en referens till sitt eget objekt. Så det är en länkad lista.
HashMap:

Nod:

Prestanda för HashMap
HashMaps prestanda beror på 2 parametrar som heter enligt följande:
- Initial kapacitet
- Belastningsfaktor
1. Initial kapacitet – Det är kapaciteten för HashMap vid tidpunkten för dess skapelse (det är antalet hinkar en HashMap kan hålla när HashMap instansieras). I java är den initialt 2^4=16, vilket betyder att den kan innehålla 16 nyckel-värdepar.
2. Belastningsfaktor – Det är det procentuella värdet av kapaciteten efter vilket Hashmaps kapacitet ska ökas (det är den procentuella fyllningen av hinkar efter vilken Rehashing sker). I java är det 0,75f som standard, vilket betyder att omhasningen sker efter att 75 % av kapaciteten fyllts.
3. Tröskel – Det är produkten av belastningsfaktor och initial kapacitet. I java är det som standard (16 * 0,75 = 12). Det vill säga, Rehashing sker efter att 12 nyckel-värdepar har infogats i HashMap.
4. Omhasning – Det är processen att fördubbla kapaciteten för HashMap efter att den når sin tröskel. I java fortsätter HashMap att rehash (som standard) i följande sekvens – 2^4, 2^5, 2^6, 2^7, …. så vidare.
Om den initiala kapaciteten hålls högre kommer omhaskning aldrig att göras. Men genom att hålla den högre ökar tidskomplexiteten för iterationen. Så det bör väljas mycket smart för att öka prestandan. Det förväntade antalet värden bör beaktas för att ställa in den initiala kapaciteten. Det mest allmänt föredragna belastningsfaktorvärdet är 0,75 vilket ger en hel del mellan tids- och platskostnader. Belastningsfaktorns värde varierar mellan 0 och 1.
Notera: Från Java 8 och framåt har Java börjat använda Self Balancing BST istället för en länkad lista för kedja. Fördelen med självbalanserande bst är att vi får det värsta fallet (när varje nyckel mappar till samma plats) söktiden är O(Log n).
Synkroniserad HashMap
Som det sägs att HashMap är osynkroniserat, dvs flera trådar kan komma åt det samtidigt. Om flera trådar får åtkomst till den här klassen samtidigt och minst en tråd manipulerar den strukturellt så är det nödvändigt att göra den externt synkroniserad. Det görs genom att synkronisera något objekt som kapslar in kartan. Om inget sådant objekt existerar kan det lindas runt Collections.synchronizedMap() för att göra HashMap synkroniserat och undvika osynkroniserad åtkomst av misstag. Som i följande exempel:
Map m = Collections.synchronizedMap(new HashMap(...));>
Nu är Map m synkroniserad. Iteratorer av denna klass är misslyckade om någon strukturändring görs efter skapandet av iteratorn, på något sätt förutom genom iteratorns borttagningsmetod. Om en iterator misslyckas kommer den att kasta ConcurrentModificationException.
Applikationer av HashMap:
HashMap är huvudsakligen implementeringen av hashing. Det är användbart när vi behöver effektiv implementering av sök-, infognings- och raderingsoperationer. Vänligen se tillämpningar av hashing för detaljer.
Metoder i HashMapassociate
- K – Typen av nycklar i kartan.
- I – Typen av värden som mappas i kartan.
| Metod | Beskrivning |
|---|---|
| klar() | Tar bort alla mappningar från denna karta. |
| klona() | Returnerar en ytlig kopia av denna HashMap-instans: själva nycklarna och värdena är inte klonade. |
| compute(K-nyckel, BiFunction ? super V,? utökar V> remappingFunction) | Försöker beräkna en mappning för den angivna nyckeln och dess aktuella mappade värde (eller null om det inte finns någon aktuell mappning). |
| computeIfAbsent(K-tangent, Funktion super K,? utökar V> mappingFunction) | Om den angivna nyckeln inte redan är associerad med ett värde (eller är mappad till null), försöker beräkna dess värde med hjälp av den givna mappningsfunktionen och matar in den i denna karta om inte null. |
| computeIfPresent(K-nyckel, BiFunction ? super V,? utökar V> remappingFunction) | Om värdet för den angivna nyckeln finns och inte är null, försöker man beräkna en ny mappning givet nyckeln och dess aktuella mappade värde. |
| containsKey(Objektnyckel) | Returnerar sant om denna karta innehåller en mappning för den angivna nyckeln. |
| innehållerValue(Objektvärde) | Returnerar sant om denna karta mappar en eller flera nycklar till det angivna värdet. |
| entrySet() | Returnerar en Set-vy av mappningarna som finns i denna karta. |
| get (objektnyckel) | Returnerar värdet som den angivna nyckeln är mappad till, eller null om denna karta inte innehåller någon mappning för nyckeln. |
| är tom() | Returnerar sant om den här kartan inte innehåller några nyckel-värde-mappningar. |
| keySet() | Returnerar en Set-vy av nycklarna i denna karta. |
| sammanfoga (K-nyckel, V-värde, BiFunction ? super V,? utökar V> remappingFunction) | Om den angivna nyckeln inte redan är associerad med ett värde eller är associerad med null, associera den med det givna icke-nullvärdet. |
| put(K-nyckel, V-värde) | Associerar det angivna värdet med den angivna nyckeln i denna karta. |
| putAll(Map m) | Kopierar alla mappningar från den angivna kartan till den här kartan. |
| ta bort (objektnyckel) | Tar bort mappningen för den angivna nyckeln från denna karta om den finns. |
| storlek() | Returnerar antalet nyckel-värde-mappningar i den här kartan. |
| värden() | Returnerar en samlingsvy av värdena som finns i denna karta. |
Metoder ärvda från klassen java.util.AbstractMap
| METOD | BESKRIVNING |
|---|---|
| lika() | Jämför det angivna objektet med denna karta för jämlikhet. |
| hash-kod() | Returnerar hashkodvärdet för denna karta. |
| att stränga() | Returnerar en strängrepresentation av denna karta. |
Metoder som ärvts från gränssnittet java.util.Map
| METOD | BESKRIVNING |
|---|---|
| lika() | Jämför det angivna objektet med denna karta för jämlikhet. |
| forEach(BiConsumer action) | Utför den givna åtgärden för varje post i denna karta tills alla poster har bearbetats eller åtgärden ger ett undantag. |
| getOrDefault(Objektnyckel, V defaultValue) | Returnerar värdet som den angivna nyckeln är mappad till, eller defaultValue om denna karta inte innehåller någon mappning för nyckeln. |
| hash-kod() | Returnerar hashkodvärdet för denna karta. |
| putIfAbsent(K-nyckel, V-värde) | Om den angivna nyckeln inte redan är associerad med ett värde (eller är mappad till null) associerar den med det givna värdet och returnerar null, annars returnerar det aktuella värdet. |
| remove(Objektnyckel, Objektvärde) | Tar endast bort posten för den angivna nyckeln om den för närvarande är mappad till det angivna värdet. |
| ersätt (K-nyckel, V-värde) | Ersätter posten för den angivna nyckeln endast om den för närvarande är mappad till något värde. |
| ersätt (K-nyckel, V oldValue, V newValue) | Ersätter posten för den angivna nyckeln endast om den är mappad till det angivna värdet. |
| replaceAll(BiFunction-funktion) | Ersätter varje posts värde med resultatet av att anropa den givna funktionen på den posten tills alla poster har bearbetats eller funktionen ger ett undantag. |
Fördelar med Java HashMap
- Snabb hämtning: HashMaps ger konstant tidsåtkomst till element, vilket gör att hämtning och infogning av element går mycket snabbt.
- Effektiv förvaring : HashMaps använder en hashfunktion för att mappa nycklar till index i en array. Detta möjliggör snabb uppslagning av värden baserat på nycklar och effektiv lagring av data.
- Flexibilitet : HashMaps tillåter null-nycklar och värden och kan lagra nyckel-värdepar av vilken datatyp som helst.
- Lätt att använda : HashMaps har ett enkelt gränssnitt och kan enkelt implementeras i Java.
- Lämplig för stora datamängder : HashMaps kan hantera stora datamängder utan att sakta ner.
Nackdelar med Java HashMap
- Obeställd : HashMaps är inte ordnade, vilket innebär att ordningen som element läggs till på kartan inte bevaras.
- Inte trådsäker : HashMaps är inte trådsäkra, vilket innebär att om flera trådar får åtkomst till samma hashmap samtidigt kan det leda till datainkonsekvenser.
- Prestanda kan försämras : I vissa fall, om hashfunktionen inte är korrekt implementerad eller om belastningsfaktorn är för hög, kan prestandan för en HashMap försämras.
- Mer komplex än arrayer eller listor : HashMaps kan vara mer komplexa att förstå och använda än enkla arrayer eller listor, särskilt för nybörjare.
- Högre minnesanvändning : Eftersom HashMaps använder en underliggande array kan de använda mer minne än andra datastrukturer som arrayer eller listor. Detta kan vara en nackdel om minnesanvändning är ett problem.
Läs också
- Hashmap vs Treemap
- Hashmap vs HashTable
- Nya artiklar om Java HashMap
Vanliga frågor om Java HashMap
1. Vad är en HashMap i Java?
HashMap i Java är klassen från samlingsramverket som kan lagra nyckel-värdepar inuti den.
2. Varför använda HashMap i Java?
HashMap i Java används för att lagra nyckel-värdepar där varje nyckel är unik.
3. Vad är fördelen med HashMap?
HashMap används på grund av att det tillhandahåller funktioner som:
- Snabb hämtning
- Effektiv förvaring
- Flexibel att använda
- Lätt att använda
- Lämplig för stora datamängder