logo

HashMap in Java

In Java HashMap ist seit Java 1.2 Teil der Java-Sammlung. Diese Klasse befindet sich in java.util Paket. Es stellt die grundlegende Implementierung der Map-Schnittstelle von Java bereit. HashMap in Java speichert die Daten in Paaren (Schlüssel, Wert), und Sie können über einen Index eines anderen Typs (z. B. eine Ganzzahl) darauf zugreifen. Ein Objekt wird als Schlüssel (Index) für ein anderes Objekt (Wert) verwendet. Wenn Sie versuchen, den doppelten Schlüssel in HashMap einzufügen, wird das Element des entsprechenden Schlüssels ersetzt.

Was ist HashMap?

Java HashMap ist ähnlich wie Hash-tabelle , aber es ist unsynchronisiert. Es ermöglicht auch das Speichern der Nullschlüssel, es sollte jedoch nur ein Nullschlüsselobjekt geben und es kann eine beliebige Anzahl von Nullwerten geben. Diese Klasse gibt keine Garantien hinsichtlich der Reihenfolge der Karte. Um diese Klasse und ihre Methoden verwenden zu können, müssen Sie sie importieren java.util.HashMap Paket oder seine Superklasse.

Inhaltsverzeichnis



Java HashMap-Beispiele

Nachfolgend finden Sie die Implementierung eines Beispiels für 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);> >}> >}> }>

>

>

Ausgabe

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

HashMap Erklärung

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

Parameter:

Es werden zwei Parameter benötigt, und zwar wie folgt:

  • Der von dieser Karte verwaltete Schlüsseltyp
  • Der Typ der zugeordneten Werte

Hinweis: K Augen und Wert können keine primitiven Datentypen sein. Der Schlüssel in der Hashmap ist gültig, wenn er implementiert wird hashCode() und equal() Methode , es sollte auch unveränderlich sein (unveränderliches benutzerdefiniertes Objekt), damit Hashcode und Gleichheit konstant bleiben. Der Wert in der Hashmap kann eine beliebige Wrapper-Klasse, benutzerdefinierte Objekte, Arrays, ein beliebiger Referenztyp oder sogar null sein.

Zum Beispiel : Hashmap kann ein Array als Wert, aber nicht als Schlüssel haben.

HashMap in Java implementiert Serialisierbar , Klonbar , Karte interfaces.Java HashMap erweitert AbstractMap Klasse. Die direkten Unterklassen sind LinkedHashMap Und PrinterStateReasons .

Hierarchie von Java HashMap

Hierarchie von HashMap in Java

Eigenschaften von Java HashMap

Eine HashMap ist eine Datenstruktur, die zum Speichern und Abrufen von Werten basierend auf Schlüsseln verwendet wird. Zu den wichtigsten Merkmalen einer Hashmap gehören:

  • Schnelle Zugriffszeit : HashMaps bieten einen konstanten zeitlichen Zugriff auf Elemente, was bedeutet, dass das Abrufen und Einfügen von Elementen sehr schnell erfolgt, normalerweise O(1)-Zeitkomplexität.
  • Verwendet Hashing-Funktion : HashMaps verwendet eine Hash-Funktion, um Schlüssel Indizes in einem Array zuzuordnen. Dies ermöglicht eine schnelle Suche von Werten basierend auf Schlüsseln.
  • Speichert Schlüssel-Wert-Paare: Jedes Element in einer HashMap besteht aus einem Schlüssel-Wert-Paar. Mit dem Schlüssel wird der zugehörige Wert nachgeschlagen.
  • Unterstützt Nullschlüssel und -werte : HashMaps erlauben Nullwerte und Schlüssel. Dies bedeutet, dass ein Nullschlüssel zum Speichern eines Werts verwendet werden kann und ein Nullwert einem Schlüssel zugeordnet werden kann.
  • Nicht bestellt: HashMaps sind nicht geordnet, was bedeutet, dass die Reihenfolge, in der Elemente zur Karte hinzugefügt werden, nicht beibehalten wird. LinkedHashMap ist jedoch eine Variante von HashMap, die die Einfügereihenfolge beibehält.
  • Ermöglicht Duplikate : HashMaps erlauben doppelte Werte, aber keine doppelten Schlüssel. Wenn ein doppelter Schlüssel hinzugefügt wird, wird der vorherige Wert, der dem Schlüssel zugeordnet ist, überschrieben.
  • Thread-unsicher : HashMaps sind nicht threadsicher, was bedeutet, dass es zu Dateninkonsistenzen kommen kann, wenn mehrere Threads gleichzeitig auf dieselbe Hashmap zugreifen. Wenn Thread-Sicherheit erforderlich ist, kann ConcurrentHashMap verwendet werden.
  • Kapazität und Auslastungsfaktor : HashMaps haben eine Kapazität, also die Anzahl der Elemente, die sie aufnehmen kann, und einen Auslastungsfaktor, der angibt, wie voll die Hashmap sein kann, bevor ihre Größe geändert wird.

HashMap in Java erstellen

Lassen Sie uns anhand des folgenden Beispiels verstehen, wie wir HashMap in Java erstellen können:

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

>

>

Ausgabe

25 false 2>

Java HashMap-Konstruktoren

HashMap stellt vier Konstruktoren bereit, deren Zugriffsmodifikator jeweils öffentlich ist. Diese sind wie folgt aufgeführt:

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

Besprechen Sie nun die oben genannten Konstruktoren einzeln und implementieren Sie sie mithilfe sauberer Java-Programme.

1. HashMap()

Es ist der Standardkonstruktor, der eine Instanz von HashMap mit einer Anfangskapazität von 16 und einem Auslastungsfaktor von 0,75 erstellt.

Syntax:

HashMap hm = new HashMap();>

Beispiel

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

>

>

Ausgabe

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)

Es erstellt eine HashMap-Instanz mit a angegebene Anfangskapazität und Auslastungsfaktor von 0,75.

Syntax:

HashMap hm = new HashMap(int initialCapacity);>

Beispiel

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

>

>

Ausgabe

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)

Es erstellt eine HashMap-Instanz mit einer angegebenen Anfangskapazität und einem angegebenen Auslastungsfaktor.

Syntax:

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

Beispiel

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

>

>

Ausgabe

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

4. HashMap (Kartenkarte)

Es erstellt eine Instanz von HashMap mit denselben Zuordnungen wie die angegebene Karte.

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

>

>

Ausgabe

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

Durchführen verschiedener Vorgänge auf HashMap

1. Elemente hinzufügen in HashMap in Java

Um der Karte ein Element hinzuzufügen, können wir das verwenden setzen() Methode. Allerdings bleibt die Einfügereihenfolge in der Hashmap nicht erhalten. Intern wird für jedes Element ein separater Hash generiert und die Elemente werden basierend auf diesem Hash indiziert, um die Effizienz zu erhöhen.

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

>

>

Ausgabe

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

2. Elemente in HashMap in Java ändern

Wenn wir nach dem Hinzufügen der Elemente das Element ändern möchten, können wir dies tun, indem wir das Element erneut mit hinzufügen setzen() Methode. Da die Elemente in der Karte mithilfe der Schlüssel indiziert werden, kann der Wert des Schlüssels geändert werden, indem einfach der aktualisierte Wert für den Schlüssel eingegeben wird, den wir ändern möchten.

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

>

>

Ausgabe

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

3. Element aus Java HashMap entfernen

Um ein Element aus der Map zu entfernen, können wir verwenden entfernen() Methode. Diese Methode nimmt den Schlüsselwert und entfernt die Zuordnung für einen Schlüssel aus dieser Zuordnung, sofern er in der Zuordnung vorhanden ist.

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

>

Vijay-Filmschauspieler
>

Ausgabe

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

4. Durchquerung von Java HashMap

Wir können die Iterator-Schnittstelle verwenden, um jede Struktur des Collection Framework zu durchlaufen. Da Iteratoren mit einem Datentyp arbeiten, verwenden wir Entry, um die beiden separaten Typen in ein kompatibles Format aufzulösen. Anschließend drucken wir mit der Methode next() die Einträge von HashMap aus.

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

>

>

Ausgabe

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

Komplexität von HashMap in Java

HashMap bietet eine konstante Zeitkomplexität für grundlegende Operationen, Get und Put, wenn die Hash-Funktion richtig geschrieben ist und die Elemente richtig auf die Buckets verteilt. Die Iteration über HashMap hängt von der Kapazität von HashMap und der Anzahl der Schlüssel-Wert-Paare ab. Grundsätzlich ist es direkt proportional zur Kapazität + Größe. Die Kapazität ist die Anzahl der Buckets in HashMap. Daher ist es keine gute Idee, zunächst eine große Anzahl von Buckets in HashMap zu behalten.

Methoden

Zeitkomplexität

Weltraumkomplexität

Elemente in HashMap hinzufügen

O(1)

AN)

Element aus HashMap entfernen

O(1)

AN)

Extrahieren eines Elements aus Java

O(1)

AN)

Wichtige Funktionen von HashMap

Um auf einen Wert zuzugreifen, muss man seinen Schlüssel kennen. HashMap ist als HashMap bekannt, da es eine Technik namens Hashing verwendet. Hashing ist eine Technik zum Konvertieren eines großen Strings in einen kleinen String, der denselben String darstellt. Ein kürzerer Wert hilft bei der Indizierung und schnelleren Suchvorgängen. HashSet Verwendet HashMap auch intern.
Einige wichtige Funktionen von HashMap sind:

  • HashMap ist Teil des java.util-Pakets.
  • HashMap erweitert eine abstrakte Klasse AbstractMap, die auch eine unvollständige Implementierung der Map-Schnittstelle bereitstellt.
  • Es implementiert auch a Klonbar Und Serialisierbar Schnittstellen. K und V stehen in der obigen Definition für Schlüssel bzw. Wert.
  • HashMap erlaubt keine doppelten Schlüssel, aber doppelte Werte. Das bedeutet, dass ein einzelner Schlüssel nicht mehr als einen Wert enthalten kann, aber mehr als ein Schlüssel kann einen einzelnen Wert enthalten.
  • HashMap erlaubt auch einen Nullschlüssel, jedoch nur einmal und mehrere Nullwerte.
  • Diese Klasse gibt keine Garantien hinsichtlich der Reihenfolge der Karte; Insbesondere ist keine Gewähr dafür gegeben, dass die Bestellung über einen längeren Zeitraum konstant bleibt. Es ähnelt in etwa HashTable, ist jedoch nicht synchronisiert.

Interne Struktur von HashMap

Intern enthält HashMap ein Array von Node und ein Node wird als Klasse dargestellt, die 4 Felder enthält:

  1. int-Hash
  2. K-Taste
  3. V-Wert
  4. Knoten als nächstes

Es ist ersichtlich, dass der Knoten einen Verweis auf sein eigenes Objekt enthält. Es handelt sich also um eine verknüpfte Liste.

HashMap:

Java HashMap

Knoten:

node_hash_map

Leistung von HashMap

Die Leistung von HashMap hängt von 2 Parametern ab, die wie folgt benannt sind:

  1. Anfangskapazität
  2. Ladefaktor

1. Anfangskapazität – Es ist die Kapazität von HashMap zum Zeitpunkt ihrer Erstellung (es ist die Anzahl der Buckets, die eine HashMap aufnehmen kann, wenn die HashMap instanziiert wird). In Java ist es zunächst 2^4=16, was bedeutet, dass es 16 Schlüssel-Wert-Paare enthalten kann.

2. Lastfaktor – Dies ist der prozentuale Wert der Kapazität, nach dem die Kapazität von Hashmap erhöht werden soll (es ist der Prozentsatz der Bucket-Füllung, nach der das Rehashing stattfindet). In Java beträgt er standardmäßig 0,75f, was bedeutet, dass das erneute Aufwärmen erfolgt, nachdem 75 % der Kapazität gefüllt sind.

3. Schwelle – Es ist das Produkt aus Lastfaktor und Anfangskapazität. In Java ist es standardmäßig (16 * 0,75 = 12). Das heißt, das Rehashing findet nach dem Einfügen von 12 Schlüssel-Wert-Paaren in die HashMap statt.

4. Aufwärmen – Dabei handelt es sich um den Prozess der Verdoppelung der Kapazität der HashMap, nachdem sie ihren Schwellenwert erreicht hat. In Java rehasht HashMap (standardmäßig) weiterhin in der folgenden Reihenfolge – 2^4, 2^5, 2^6, 2^7, …. bald.

Wenn die Anfangskapazität höher gehalten wird, erfolgt kein erneutes Aufwärmen. Wenn man den Wert jedoch höher hält, erhöht sich die zeitliche Komplexität der Iteration. Es sollte also sehr geschickt gewählt werden, um die Leistung zu steigern. Bei der Festlegung der Anfangskapazität sollte die erwartete Anzahl an Werten berücksichtigt werden. Der am häufigsten bevorzugte Lastfaktorwert ist 0,75, was ein gutes Verhältnis zwischen Zeit- und Raumkosten bietet. Der Wert des Lastfaktors variiert zwischen 0 und 1.

Notiz: Ab Java 8 verwendet Java Self Balancing BST anstelle einer verknüpften Liste für die Verkettung. Der Vorteil von selbstausgleichendem BST besteht darin, dass wir im schlimmsten Fall (wenn jede Taste demselben Slot zugeordnet ist) eine Suchzeit von O(Log n) erhalten.

Synchronisierte HashMap

Es heißt, dass HashMap unsynchronisiert ist, d. h. mehrere Threads können gleichzeitig darauf zugreifen. Wenn mehrere Threads gleichzeitig auf diese Klasse zugreifen und mindestens ein Thread sie strukturell manipuliert, ist eine externe Synchronisierung erforderlich. Dies geschieht durch die Synchronisierung eines Objekts, das die Karte kapselt. Wenn kein solches Objekt vorhanden ist, kann es um Collections.synchronizedMap() gewickelt werden, um HashMap zu synchronisieren und einen versehentlichen, nicht synchronisierten Zugriff zu vermeiden. Wie im folgenden Beispiel:

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

Jetzt ist die Map m synchronisiert. Iteratoren dieser Klasse sind ausfallsicher, wenn nach der Erstellung des Iterators Strukturänderungen vorgenommen werden, außer über die Methode „remove“ des Iterators. Bei einem Fehler eines Iterators wird eine ConcurrentModificationException ausgelöst.

Anwendungen von HashMap:

HashMap ist hauptsächlich die Implementierung von Hashing. Dies ist nützlich, wenn wir eine effiziente Implementierung von Such-, Einfüge- und Löschvorgängen benötigen. Bitte wende dich an die Anwendungen von Hashing für Details.

Methoden in HashMapassociate

  • K – Der Typ der Schlüssel in der Karte.
  • IN – Die Art der in der Karte abgebildeten Werte.

Methode

Beschreibung

klar() Entfernt alle Zuordnungen aus dieser Karte.
Klon() Gibt eine flache Kopie dieser HashMap-Instanz zurück: Die Schlüssel und Werte selbst werden nicht geklont.
berechnen(K-Taste, BiFunction ? super V,? erweitert V> remappingFunction) Versucht, eine Zuordnung für den angegebenen Schlüssel und seinen aktuell zugeordneten Wert zu berechnen (oder null, wenn keine aktuelle Zuordnung vorhanden ist).
computeIfAbsent(K-Taste, Funktion super K,? erweitert V> MappingFunction) Wenn der angegebene Schlüssel noch nicht mit einem Wert verknüpft ist (oder auf Null abgebildet ist), versucht er, seinen Wert mithilfe der angegebenen Zuordnungsfunktion zu berechnen, und gibt ihn in diese Zuordnung ein, sofern er nicht Null ist.
computeIfPresent(K-Taste, BiFunction ? super V,? erweitert V> remappingFunction) Wenn der Wert für den angegebenen Schlüssel vorhanden und ungleich Null ist, wird versucht, eine neue Zuordnung anhand des Schlüssels und seines aktuellen zugeordneten Werts zu berechnen.
enthältKey(Objektschlüssel) Gibt „true“ zurück, wenn diese Zuordnung eine Zuordnung für den angegebenen Schlüssel enthält.
enthältWert(Objektwert) Gibt „true“ zurück, wenn diese Zuordnung einen oder mehrere Schlüssel dem angegebenen Wert zuordnet.
EintragSet() Gibt eine Set-Ansicht der in dieser Karte enthaltenen Zuordnungen zurück.
get(Objektschlüssel) Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet ist, oder null, wenn diese Zuordnung keine Zuordnung für den Schlüssel enthält.
ist leer() Gibt „true“ zurück, wenn diese Karte keine Schlüsselwertzuordnungen enthält.
Schlüsselsatz() Gibt eine Set-Ansicht der in dieser Karte enthaltenen Schlüssel zurück.
merge(K-Taste, V-Wert, BiFunction ? super V,? erweitert V> remappingFunction) Wenn der angegebene Schlüssel noch keinem Wert zugeordnet ist oder mit Null verknüpft ist, verknüpfen Sie ihn mit dem angegebenen Nicht-Null-Wert.
put(K-Taste, V-Wert) Ordnet den angegebenen Wert dem angegebenen Schlüssel in dieser Zuordnung zu.
putAll(Map m) Kopiert alle Zuordnungen von der angegebenen Karte in diese Karte.
entfernen(Objektschlüssel) Entfernt die Zuordnung für den angegebenen Schlüssel aus dieser Zuordnung, falls vorhanden.
Größe() Gibt die Anzahl der Schlüsselwertzuordnungen in dieser Karte zurück.
Werte() Gibt eine Sammlungsansicht der in dieser Karte enthaltenen Werte zurück.

Von der Klasse java.util.AbstractMap geerbte Methoden

METHODE

BESCHREIBUNG

gleich()

Vergleicht das angegebene Objekt mit dieser Karte auf Gleichheit.

Hash-Code()

Gibt den Hash-Codewert für diese Karte zurück.

toString()

Gibt eine String-Darstellung dieser Karte zurück.

Von der Schnittstelle java.util.Map geerbte Methoden

METHODE

BESCHREIBUNG

gleich() Vergleicht das angegebene Objekt mit dieser Karte auf Gleichheit.

forEach(BiConsumer-Aktion)

Führt die angegebene Aktion für jeden Eintrag in dieser Karte aus, bis alle Einträge verarbeitet wurden oder die Aktion eine Ausnahme auslöst.
getOrDefault(Objektschlüssel, V defaultValue) Gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet ist, oder defaultValue, wenn diese Zuordnung keine Zuordnung für den Schlüssel enthält.
Hash-Code() Gibt den Hash-Codewert für diese Karte zurück.
putIfAbsent(K-Taste, V-Wert) Wenn der angegebene Schlüssel noch keinem Wert zugeordnet ist (oder auf null abgebildet ist), wird er mit dem angegebenen Wert verknüpft und null zurückgegeben, andernfalls wird der aktuelle Wert zurückgegeben.
entfernen(Objektschlüssel, Objektwert) Entfernt den Eintrag für den angegebenen Schlüssel nur, wenn er derzeit dem angegebenen Wert zugeordnet ist.
ersetzen(K-Taste, V-Wert) Ersetzt den Eintrag für den angegebenen Schlüssel nur, wenn er derzeit einem Wert zugeordnet ist.
ersetzen(K-Taste, V alter Wert, V neuer Wert) Ersetzt den Eintrag für den angegebenen Schlüssel nur, wenn er aktuell dem angegebenen Wert zugeordnet ist.

replaceAll(BiFunction-Funktion)

Ersetzt den Wert jedes Eintrags durch das Ergebnis des Aufrufs der angegebenen Funktion für diesen Eintrag, bis alle Einträge verarbeitet wurden oder die Funktion eine Ausnahme auslöst.

Vorteile von Java HashMap

  • Schneller Abruf: HashMaps bieten einen konstanten zeitlichen Zugriff auf Elemente, was bedeutet, dass das Abrufen und Einfügen von Elementen sehr schnell erfolgt.
  • Effiziente Lagerung : HashMaps verwenden eine Hashing-Funktion, um Schlüssel Indizes in einem Array zuzuordnen. Dies ermöglicht eine schnelle Suche nach Werten anhand von Schlüsseln und eine effiziente Datenspeicherung.
  • Flexibilität : HashMaps ermöglichen Nullschlüssel und -werte und können Schlüssel-Wert-Paare jedes Datentyps speichern.
  • Einfach zu verwenden : HashMaps haben eine einfache Schnittstelle und können leicht in Java implementiert werden.
  • Geeignet für große Datenmengen : HashMaps kann große Datenmengen verarbeiten, ohne langsamer zu werden.

Nachteile von Java HashMap

  • Ungeordnet : HashMaps sind nicht geordnet, was bedeutet, dass die Reihenfolge, in der Elemente zur Karte hinzugefügt werden, nicht beibehalten wird.
  • Nicht threadsicher : HashMaps sind nicht threadsicher, was bedeutet, dass es zu Dateninkonsistenzen kommen kann, wenn mehrere Threads gleichzeitig auf dieselbe Hashmap zugreifen.
  • Die Leistung kann nachlassen : In einigen Fällen kann sich die Leistung einer HashMap verschlechtern, wenn die Hashing-Funktion nicht ordnungsgemäß implementiert ist oder der Auslastungsfaktor zu hoch ist.
  • Komplexer als Arrays oder Listen : HashMaps können komplexer zu verstehen und zu verwenden sein als einfache Arrays oder Listen, insbesondere für Anfänger.
  • Höhere Speichernutzung : Da HashMaps ein zugrunde liegendes Array verwenden, können sie mehr Speicher beanspruchen als andere Datenstrukturen wie Arrays oder Listen. Dies kann ein Nachteil sein, wenn die Speichernutzung ein Problem darstellt.
  • Hashmap vs. Treemap
  • Hashmap vs. HashTable
  • Aktuelle Artikel zu Java HashMap

FAQs zu Java HashMap

1. Was ist eine HashMap in Java?

HashMap in Java ist die Klasse aus dem Collection-Framework, die darin Schlüssel-Wert-Paare speichern kann.

2. Warum HashMap in Java verwenden?

HashMap in Java wird zum Speichern von Schlüssel-Wert-Paaren verwendet, wobei jeder Schlüssel eindeutig ist.

3. Was ist der Vorteil von HashMap?

HashMap wird verwendet, weil es Funktionen bietet wie:

  • Schneller Abruf
  • Effiziente Lagerung
  • Flexibel einsetzbar
  • Einfach zu verwenden
  • Geeignet für große Datenmengen