logo

HashMap a Java

A Java, HashMap forma part de la col·lecció de Java des de Java 1.2. Aquesta classe es troba a java.util paquet. Proporciona la implementació bàsica de la interfície Map de Java. HashMap a Java emmagatzema les dades en parells (clau, valor) i podeu accedir-hi mitjançant un índex d'un altre tipus (per exemple, un nombre enter). Un objecte s'utilitza com a clau (índex) per a un altre objecte (valor). Si intenteu inserir la clau duplicada a HashMap, substituirà l'element de la clau corresponent.

Què és HashMap?

Java HashMap és semblant a HashTable , però no està sincronitzat. També permet emmagatzemar les claus nul·les, però només hi hauria d'haver un objecte de clau nul·la i pot haver-hi qualsevol nombre de valors nuls. Aquesta classe no garanteix l'ordre del mapa. Per utilitzar aquesta classe i els seus mètodes, cal importar java.util.HashMap paquet o la seva superclasse.

Taula de contingut



Exemples de Java HashMap

A continuació es mostra la implementació d'un exemple de 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);> >}> >}> }>

>

>

Sortida

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

HashMap Declaració

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

Paràmetres:

Pren dos paràmetres, a saber, el següent:

  • El tipus de claus que manté aquest mapa
  • El tipus de valors assignats

Nota: K Els ulls i el valor no poden ser un tipus de dades primitiu. La clau en Hashmap és vàlida si s'implementa mètode hashCode() i equals(). , també hauria de ser immutable (objecte personalitzat immutable) de manera que el codi hash i la igualtat romanguin constants. El valor del mapa hash pot ser qualsevol classe d'embolcall, objectes personalitzats, matrius, qualsevol tipus de referència o fins i tot null .

Per exemple : Hashmap pot tenir una matriu com a valor però no com a clau.

HashMap en implements de Java Serialitzable , Clonable , Mapa interfaces.Java HashMap s'estén Mapa abstracte classe. Les subclasses directes són LinkedHashMap i PrinterStateReasons .

Jerarquia de Java HashMap

Jerarquia de HashMap a Java

Característiques de Java HashMap

Un HashMap és una estructura de dades que s'utilitza per emmagatzemar i recuperar valors basats en claus. Algunes de les característiques clau d'un hashmap inclouen:

  • Temps d'accés ràpid : HashMaps ofereix un accés constant als elements, la qual cosa significa que la recuperació i la inserció d'elements són molt ràpides, normalment amb complexitat temporal O(1).
  • Utilitza la funció hashing : HashMaps utilitza una funció hash per assignar claus a índexs en una matriu. Això permet una cerca ràpida de valors basats en claus.
  • Emmagatzema parells clau-valor: Cada element d'un HashMap consta d'un parell clau-valor. La clau s'utilitza per cercar el valor associat.
  • Admet claus i valors nuls : HashMaps permet valors i claus nuls. Això vol dir que es pot utilitzar una clau nul·la per emmagatzemar un valor i un valor nul es pot associar a una clau.
  • No ordenat: Els HashMaps no estan ordenats, la qual cosa significa que no es conserva l'ordre en què s'afegeixen els elements al mapa. Tanmateix, LinkedHashMap és una variació de HashMap que conserva l'ordre d'inserció.
  • Permet duplicats : HashMaps permeten valors duplicats, però no claus duplicades. Si s'afegeix una clau duplicada, se sobreescriu el valor anterior associat a la clau.
  • Fils insegurs : Els mapes hash no són segurs per a fils, el que significa que si diversos fils accedeixen al mateix mapa hash simultàniament, pot provocar inconsistències de dades. Si es requereix seguretat de fil, es pot utilitzar ConcurrentHashMap.
  • Capacitat i factor de càrrega : Els mapes hash tenen una capacitat, que és el nombre d'elements que pot contenir, i un factor de càrrega, que és la mesura de com de ple pot estar el mapa hash abans de canviar la mida.

Creació de HashMap en Java

Anem a entendre com podem crear HashMap a Java amb un exemple esmentat a continuació:

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> >}> }>

>

>

Sortida

25 false 2>

Constructors Java HashMap

HashMap proporciona 4 constructors i el modificador d'accés de cadascun és públic, que s'enumeren de la següent manera:

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

Ara discutim els constructors anteriors un per un juntament amb la implementació del mateix amb l'ajuda de programes Java nets.

1. HashMap()

És el constructor predeterminat que crea una instància de HashMap amb una capacitat inicial de 16 i un factor de càrrega de 0,75.

Sintaxi:

HashMap hm = new HashMap();>

Exemple

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);> >}> }>

>

>

Sortida

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)

Crea una instància HashMap amb a capacitat inicial especificada i factor de càrrega de 0.75.

Sintaxi:

HashMap hm = new HashMap(int initialCapacity);>

Exemple

Java

qui es urfi javed




// 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);> >}> }>

>

>

Sortida

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)

Crea una instància HashMap amb una capacitat inicial especificada i un factor de càrrega especificat.

Sintaxi:

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

Exemple

Java




classe d'escàner 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);> >}> }>

>

>

Sortida

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 del mapa)

Crea una instància de HashMap amb els mateixos mapes que el mapa especificat.

HashMap hm = nou HashMap (mapa del mapa);

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);> >}> }>

>

>

Sortida

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

Realització de diverses operacions en HashMap

1. Addició d'elements a HashMap a Java

Per afegir un element al mapa, podem utilitzar el posar() mètode. Tanmateix, l'ordre d'inserció no es conserva al mapa hash. Internament, per a cada element, es genera un hash independent i els elements s'indexen en funció d'aquest hash per fer-lo més eficient.

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);> >}> }>

>

>

Sortida

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

2. Canvi d'elements en HashMap a Java

Després d'afegir els elements si volem canviar l'element, es pot fer afegint de nou l'element amb el posar() mètode. Com que els elements del mapa s'indexen mitjançant les claus, el valor de la clau es pot canviar simplement inserint el valor actualitzat de la clau per a la qual volem canviar.

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);> >}> }>

>

>

Sortida

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

3. Eliminació de l'element de Java HashMap

Per eliminar un element del mapa, podem utilitzar el eliminar () mètode. Aquest mètode pren el valor de la clau i elimina l'assignació d'una clau d'aquest mapa si està present al mapa.

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);> >}> }>

>

>

Sortida

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

4. Travessa de Java HashMap

Podem utilitzar la interfície Iterator per recórrer qualsevol estructura del marc de col·lecció. Com que els iteradors treballen amb un tipus de dades, fem servir l'Entry per resoldre els dos tipus separats en un format compatible. A continuació, utilitzant el mètode next() imprimim les entrades de 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());> >}> }>

>

>

Sortida

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

Complexitat de HashMap a Java

HashMap proporciona una complexitat de temps constant per a les operacions bàsiques, obtenir i posar si la funció hash està correctament escrita i dispersa els elements correctament entre els cubs. La iteració sobre HashMap depèn de la capacitat de HashMap i del nombre de parells clau-valor. Bàsicament, és directament proporcional a la capacitat + mida. La capacitat és el nombre de cubs a HashMap. Per tant, no és una bona idea mantenir inicialment un gran nombre de cubs a HashMap.

Mètodes

Complexitat temporal

Complexitat espacial

Afegir elements a HashMap

O(1)

O(N)

Eliminació de l'element de HashMap

O(1)

O(N)

Extracció d'elements de Java

O(1)

O(N)

Característiques importants de HashMap

Per accedir a un valor s'ha de conèixer la seva clau. HashMap es coneix com HashMap perquè utilitza una tècnica anomenada Hashing. Hashing és una tècnica per convertir una cadena gran en una cadena petita que representa la mateixa cadena. Un valor més curt ajuda a la indexació i a les cerques més ràpides. HashSet també utilitza HashMap internament.
Algunes característiques importants de HashMap són:

  • HashMap és una part del paquet java.util.
  • HashMap amplia una classe abstracta AbstractMap que també proporciona una implementació incompleta de la interfície Map.
  • També implementa a Clonable i Serialitzable interfícies. K i V a la definició anterior representen la clau i el valor respectivament.
  • HashMap no permet claus duplicades, però permet valors duplicats. Això vol dir que una sola clau no pot contenir més d'1 valor, però més d'1 clau pot contenir un sol valor.
  • HashMap també permet una clau nul·la, però només una vegada i diversos valors nuls.
  • Aquesta classe no garanteix l'ordre del mapa; en particular, no garanteix que l'ordre es mantingui constant al llarg del temps. És aproximadament similar a HashTable, però no està sincronitzat.

Estructura interna de HashMap

Internament, HashMap conté una matriu de Node i un node es representa com una classe que conté 4 camps:

  1. int hash
  2. Tecla K
  3. valor V
  4. Node següent

Es pot veure que el node conté una referència al seu propi objecte. Per tant, és una llista enllaçada.

HashMap:

Java HashMap

Node:

mapa_de_nodes

Rendiment de HashMap

El rendiment de HashMap depèn de 2 paràmetres que s'anomenen de la següent manera:

  1. Capacitat inicial
  2. Factor de càrrega

1. Capacitat Inicial – És la capacitat de HashMap en el moment de la seva creació (és el nombre de cubs que pot contenir un HashMap quan s'instancia el HashMap). A java, inicialment és 2^4=16, el que significa que pot contenir 16 parells clau-valor.

2. Factor de càrrega – És el valor percentual de la capacitat després del qual s'ha d'augmentar la capacitat de Hashmap (és el percentatge d'ompliment de cubs després del qual té lloc el refrescament). A Java, és de 0,75f per defecte, és a dir, el repetit es produeix després d'omplir el 75% de la capacitat.

3. Llindar – És el producte del factor de càrrega i la capacitat inicial. A Java, per defecte, és (16 * 0,75 = 12). És a dir, la repetició té lloc després d'inserir 12 parells clau-valor al HashMap.

4. Refs – És el procés de duplicar la capacitat del HashMap després d'arribar al seu llindar. A java, HashMap continua repetint (per defecte) en la següent seqüència: 2^4, 2^5, 2^6, 2^7, .... així successivament.

Si la capacitat inicial es manté més alta, no es farà mai la repetició. Però mantenir-lo més alt augmenta la complexitat temporal de la iteració. Per tant, s'ha de triar molt intel·ligentment per augmentar el rendiment. S'ha de tenir en compte el nombre esperat de valors per establir la capacitat inicial. El valor del factor de càrrega preferit més generalment és 0,75, que proporciona una bona relació entre els costos de temps i espai. El valor del factor de càrrega varia entre 0 i 1.

Nota: A partir de Java 8, Java ha començat a utilitzar Self Balancing BST en lloc d'una llista enllaçada per encadenar. L'avantatge de l'autoequilibri bst és que obtenim el pitjor dels casos (quan totes les claus s'assignen a la mateixa ranura) el temps de cerca és O(Log n).

HashMap sincronitzat

Com es diu que HashMap no està sincronitzat, és a dir, diversos fils hi poden accedir simultàniament. Si diversos fils accedeixen a aquesta classe simultàniament i almenys un fil la manipula estructuralment, llavors és necessari que es sincronitzi externament. Es fa sincronitzant algun objecte que encapsula el mapa. Si no existeix aquest objecte, es pot embolicar al voltant de Collections.synchronizedMap() per sincronitzar HashMap i evitar l'accés no sincronitzat accidental. Com en l'exemple següent:

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

Ara el mapa m està sincronitzat. Els iteradors d'aquesta classe són ràpids de fallar si es fa alguna modificació de l'estructura després de la creació de l'iterador, de qualsevol manera excepte mitjançant el mètode d'eliminació de l'iterador. En cas d'error d'un iterador, llançarà ConcurrentModificationException.

Aplicacions de HashMap:

HashMap és principalment la implementació de hash. És útil quan necessitem una implementació eficient de les operacions de cerca, inserció i supressió. Si us plau, consulteu el aplicacions de hashing per als detalls.

Mètodes a HashMapassociate

  • K – El tipus de claus del mapa.
  • EN – El tipus de valors assignats al mapa.

Mètode

Descripció

clar () Elimina tots els mapes d'aquest mapa.
clonar () Retorna una còpia superficial d'aquesta instància de HashMap: les claus i els valors no es clonen.
calcular (tecla K, BiFunction ? super V,? amplia V> reasignació de la funció) Intenta calcular una assignació per a la clau especificada i el seu valor assignat actual (o nul si no hi ha cap assignació actual).
computeIfAbsent (tecla K, funció super K,? amplia V> mappingFunction) Si la clau especificada encara no està associada amb un valor (o està assignada a null), prova de calcular-ne el valor mitjançant la funció de mapeig donada i l'introdueix en aquest mapa tret que sigui nul.
computeIfPresent (clau K, BiFunction ? super V,? amplia V> reasignació de la funció) Si el valor de la clau especificada és present i no és nul, s'intenta calcular una assignació nova donada la clau i el seu valor assignat actual.
containsKey (clau d'objecte) Retorna true si aquest mapa conté una assignació per a la clau especificada.
containsValue (Valor de l'objecte) Retorna true si aquest mapa associa una o més claus al valor especificat.
entrySet() Retorna una vista conjunta dels mapes continguts en aquest mapa.
obtenir (clau d'objecte) Retorna el valor al qual s'ha assignat la clau especificada o nul si aquest mapa no conté cap assignació per a la clau.
està buit() Retorna true si aquest mapa no conté assignacions de valor-clau.
keySet() Retorna una vista conjunta de les claus contingudes en aquest mapa.
combina (clau K, valor V, BiFunction ? super V,? amplia V> reasignació de la funció) Si la clau especificada encara no està associada amb un valor o està associada amb nul, associa-la amb el valor no nul donat.
posar (clau K, valor V) Associa el valor especificat amb la clau especificada en aquest mapa.
putAll(Mapa m) Copia tots els mapes del mapa especificat a aquest mapa.
eliminar (clau d'objecte) Elimina l'assignació de la clau especificada d'aquest mapa si està present.
mida () Retorna el nombre de mapes de valor-clau en aquest mapa.
valors () Retorna una vista de col·lecció dels valors continguts en aquest mapa.

Mètodes heretats de la classe java.util.AbstractMap

MÈTODE

DESCRIPCIÓ

és igual()

Compara l'objecte especificat amb aquest mapa per a la igualtat.

hashCode()

Retorna el valor del codi hash per a aquest mapa.

toString()

Retorna una representació de cadena d'aquest mapa.

Mètodes heretats de la interfície java.util.Map

MÈTODE

DESCRIPCIÓ

és igual() Compara l'objecte especificat amb aquest mapa per a la igualtat.

forEach (acció BiConsumidor)

Realitza l'acció donada per a cada entrada d'aquest mapa fins que s'hagin processat totes les entrades o l'acció produeixi una excepció.
getOrDefault (clau d'objecte, V defaultValue) Retorna el valor al qual està assignada la clau especificada, o defaultValue si aquest mapa no conté cap assignació per a la clau.
hashCode() Retorna el valor del codi hash per a aquest mapa.
putIfAbsent (clau K, valor V) Si la clau especificada encara no està associada amb un valor (o està assignada a null) l'associa amb el valor donat i retorna null, en cas contrari retorna el valor actual.
eliminar (clau de l'objecte, valor de l'objecte) Elimina l'entrada de la clau especificada només si actualment està assignada al valor especificat.
substituir (clau K, valor V) Substitueix l'entrada de la clau especificada només si actualment està assignada a algun valor.
substituir (clau K, V valor antic, V valor nou) Substitueix l'entrada de la clau especificada només si actualment està assignada al valor especificat.

replaceAll (funció BiFunction)

Substitueix el valor de cada entrada amb el resultat d'invocar la funció donada en aquesta entrada fins que s'hagin processat totes les entrades o la funció llança una excepció.

Avantatges de Java HashMap

  • Recuperació ràpida: HashMaps ofereix un accés constant als elements, el que significa que la recuperació i inserció d'elements és molt ràpida.
  • Emmagatzematge eficient : HashMaps utilitza una funció hashing per mapar claus a índexs en una matriu. Això permet una cerca ràpida de valors basats en claus i un emmagatzematge eficient de dades.
  • Flexibilitat : HashMaps permet claus i valors nuls i poden emmagatzemar parells clau-valor de qualsevol tipus de dades.
  • Fàcil d'usar : HashMaps té una interfície senzilla i es pot implementar fàcilment en Java.
  • Adequat per a grans conjunts de dades : HashMaps pot gestionar grans conjunts de dades sense alentir-se.

Desavantatges de Java HashMap

  • No ordenat : els HashMaps no estan ordenats, la qual cosa significa que no es conserva l'ordre en què s'afegeixen els elements al mapa.
  • No és segur per a fils : Els mapes hash no són segurs per a fils, el que significa que si diversos fils accedeixen al mateix mapa hash simultàniament, pot provocar inconsistències de dades.
  • El rendiment pot degradar-se : En alguns casos, si la funció hash no s'implementa correctament o si el factor de càrrega és massa alt, el rendiment d'un HashMap es pot degradar.
  • Més complex que les matrius o les llistes : HashMaps pot ser més complex d'entendre i utilitzar que les simples matrius o llistes, especialment per als principiants.
  • Major ús de memòria : Com que HashMaps utilitzen una matriu subjacent, poden utilitzar més memòria que altres estructures de dades com ara matrius o llistes. Això pot ser un desavantatge si l'ús de la memòria és un problema.
  • Hashmap vs Treemap
  • Hashmap vs HashTable
  • Articles recents sobre Java HashMap

Preguntes freqüents sobre Java HashMap

1. Què és un HashMap a Java?

HashMap a Java és la classe del marc de col·lecció que pot emmagatzemar parells clau-valor al seu interior.

2. Per què utilitzar HashMap a Java?

HashMap a Java s'utilitza per emmagatzemar parells clau-valor on cada clau és única.

3. Quin és el benefici de HashMap?

HashMap s'utilitza perquè ofereix funcions com:

  • Recuperació ràpida
  • Emmagatzematge eficient
  • Flexible d'utilitzar
  • Fàcil d'usar
  • Adequat per a grans conjunts de dades