Java HashMap Klasse implementiert die Map-Schnittstelle, die uns ermöglicht zum Speichern eines Schlüssel-Wert-Paares , wobei Schlüssel eindeutig sein sollten. Wenn Sie versuchen, den Duplikatschlüssel einzufügen, ersetzt dieser das Element des entsprechenden Schlüssels. Mit dem Schlüsselindex können ganz einfach Vorgänge wie Aktualisierungen, Löschungen usw. ausgeführt werden. Die HashMap-Klasse befindet sich injava.utilPaket.
HashMap in Java ähnelt der alten Hashtable-Klasse, ist jedoch nicht synchronisiert. Dadurch können wir auch die Nullelemente speichern, es sollte jedoch nur einen Nullschlüssel geben. Seit Java 5 wird es als bezeichnetHashMap, wobei K für Schlüssel und V für Wert steht. Es erbt die AbstractMap-Klasse und implementiert die Map-Schnittstelle.
Punkte, die man sich merken sollte
- Java HashMap enthält Werte basierend auf dem Schlüssel.
- Java HashMap enthält nur eindeutige Schlüssel.
- Java HashMap kann einen Nullschlüssel und mehrere Nullwerte haben.
- Java HashMap ist nicht synchronisiert.
- Java HashMap behält keine Reihenfolge bei.
- Die anfängliche Standardkapazität der Java HashMap-Klasse beträgt 16 mit einem Auslastungsfaktor von 0,75.
Hierarchie der HashMap-Klasse
Wie in der obigen Abbildung gezeigt, erweitert die HashMap-Klasse die AbstractMap-Klasse und implementiert die Map-Schnittstelle.
Deklaration der HashMap-Klasse
Sehen wir uns die Deklaration für die Klasse java.util.HashMap an.
Selen
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Parameter der HashMap-Klasse
Sehen wir uns die Parameter für die Klasse java.util.HashMap an.
Konstruktoren der Java HashMap-Klasse
Konstrukteur | Beschreibung |
---|---|
HashMap() | Es wird verwendet, um eine Standard-HashMap zu erstellen. |
HashMap(Map m) | Es wird verwendet, um die Hash-Map mithilfe der Elemente des angegebenen Map-Objekts m zu initialisieren. |
HashMap(int Kapazität) | Es wird verwendet, um die Kapazität der Hash-Map auf den angegebenen ganzzahligen Wert, die Kapazität, zu initialisieren. |
HashMap(int Kapazität, Float LoadFactor) | Es wird verwendet, um sowohl die Kapazität als auch den Auslastungsfaktor der Hash-Map mithilfe seiner Argumente zu initialisieren. |
Methoden der Java HashMap-Klasse
Methode | Beschreibung |
---|---|
void klar() | Es wird verwendet, um alle Zuordnungen aus dieser Karte zu entfernen. |
boolean isEmpty() | Es wird verwendet, um „true“ zurückzugeben, wenn diese Karte keine Schlüsselwertzuordnungen enthält. |
Objektklon() | Es wird verwendet, um eine flache Kopie dieser HashMap-Instanz zurückzugeben: Die Schlüssel und Werte selbst werden nicht geklont. |
Setze EntrySet() | Es wird verwendet, um eine Sammlungsansicht der in dieser Karte enthaltenen Zuordnungen zurückzugeben. |
setze keySet() | Es wird verwendet, um eine festgelegte Ansicht der in dieser Karte enthaltenen Schlüssel zurückzugeben. |
V put(Objektschlüssel, Objektwert) | Es dient zum Einfügen eines Eintrags in die Karte. |
void putAll(Map Karte) | Es wird verwendet, um die angegebene Karte in die Karte einzufügen. |
V putIfAbsent(K-Taste, V-Wert) | Es fügt den angegebenen Wert mit dem angegebenen Schlüssel nur dann in die Karte ein, wenn er nicht bereits angegeben ist. |
V entfernen(Objektschlüssel) | Es wird verwendet, um einen Eintrag für den angegebenen Schlüssel zu löschen. |
boolescher Wert Remove(Objektschlüssel, Objektwert) | Es entfernt die angegebenen Werte mit den zugehörigen angegebenen Schlüsseln aus der Karte. |
V berechnen(K-Taste, BiFunction remappingFunction) | Es wird verwendet, um eine Zuordnung für den angegebenen Schlüssel und seinen aktuell zugeordneten Wert (oder null, wenn keine aktuelle Zuordnung vorhanden ist) zu berechnen. |
V computeIfAbsent(K-Taste, Funktionszuordnungsfunktion) | Es wird verwendet, um seinen Wert mithilfe der angegebenen Zuordnungsfunktion zu berechnen, wenn der angegebene Schlüssel noch nicht mit einem Wert verknüpft ist (oder auf null abgebildet ist), und gibt ihn in diese Zuordnung ein, sofern er nicht null ist. |
V computeIfPresent(K-Taste, BiFunction remappingFunction) | Es wird verwendet, um anhand des Schlüssels und seines aktuellen zugeordneten Werts eine neue Zuordnung zu berechnen, wenn der Wert für den angegebenen Schlüssel vorhanden und nicht null ist. |
boolescher Wert enthältWert(Objektwert) | Diese Methode gibt „true“ zurück, wenn in der Karte ein Wert vorhanden ist, der dem Wert entspricht, andernfalls wird „false“ zurückgegeben. |
boolescher Wert enthältSchlüssel(Objektschlüssel) | Diese Methode gibt „true“ zurück, wenn in der Karte ein Schlüssel vorhanden ist, der dem Schlüssel entspricht, andernfalls wird „false“ zurückgegeben. |
boolescher Wert gleicht (Objekt o) | Es wird verwendet, um das angegebene Objekt mit der Karte zu vergleichen. |
void forEach(BiConsumer-Aktion) | Es führt die angegebene Aktion für jeden Eintrag in der Karte aus, bis alle Einträge verarbeitet wurden oder die Aktion eine Ausnahme auslöst. |
V get(Objektschlüssel) | Diese Methode gibt das Objekt zurück, das den mit dem Schlüssel verknüpften Wert enthält. |
V getOrDefault(Objektschlüssel, V defaultValue) | Es gibt den Wert zurück, dem der angegebene Schlüssel zugeordnet ist, oder defaultValue, wenn die Zuordnung keine Zuordnung für den Schlüssel enthält. |
boolean isEmpty() | Diese Methode gibt true zurück, wenn die Karte leer ist; gibt false zurück, wenn es mindestens einen Schlüssel enthält. |
V-Zusammenführung (K-Taste, V-Wert, BiFunction-Remapping-Funktion) | Wenn der angegebene Schlüssel noch keinem Wert zugeordnet ist oder mit Null verknüpft ist, ordnet er ihn dem angegebenen Nicht-Null-Wert zu. |
V ersetzen (K-Taste, V-Wert) | Es ersetzt den angegebenen Wert für einen angegebenen Schlüssel. |
boolescher Ersatz (K-Taste, V alter Wert, V neuer Wert) | Es ersetzt den alten Wert durch den neuen Wert für einen angegebenen Schlüssel. |
void replaceAll(BiFunction-Funktion) | Der Wert jedes Eintrags wird durch das Ergebnis des Aufrufs der angegebenen Funktion für diesen Eintrag ersetzt, bis alle Einträge verarbeitet wurden oder die Funktion eine Ausnahme auslöst. |
Sammlungswerte() | Es gibt eine Sammlungsansicht der in der Karte enthaltenen Werte zurück. |
int size() | Diese Methode gibt die Anzahl der Einträge in der Karte zurück. |
Java HashMap-Beispiel
Sehen wir uns ein einfaches Beispiel für HashMap zum Speichern von Schlüssel- und Wertpaaren an.
import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Testen Sie es jetzt
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
In diesem Beispiel speichern wir Integer als Schlüssel und String als Wert, also verwenden wirHashMapals Typ. Dersetzen()Die Methode fügt die Elemente in die Karte ein.
Um die Schlüssel- und Wertelemente abzurufen, sollten wir die Methoden getKey() und getValue() aufrufen. DerKarteneintragSchnittstelle enthält die getKey() Und Wert erhalten() Methoden. Wir sollten jedoch die Methode enterSet() der Map-Schnittstelle aufrufen, um die Instanz von Map.Entry abzurufen.
Kein doppelter Schlüssel auf HashMap
Sie können keine doppelten Schlüssel in HashMap speichern. Wenn Sie jedoch versuchen, einen doppelten Schlüssel mit einem anderen Wert zu speichern, wird dieser Wert ersetzt.
import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }Testen Sie es jetzt
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Java HashMap-Beispiel zum Hinzufügen von()-Elementen
Hier sehen wir verschiedene Möglichkeiten, Elemente einzufügen.
import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi
Java HashMap-Beispiel zum Entfernen von()-Elementen
Hier sehen wir verschiedene Möglichkeiten, Elemente zu entfernen.
import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } }
Ausgabe:
Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav}
Java HashMap-Beispiel zum Ersetzen von()-Elementen
Hier sehen wir verschiedene Möglichkeiten, Elemente zu ersetzen.
import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } }
Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay
Unterschied zwischen HashSet und HashMap
HashSet enthält nur Werte, während HashMap einen Eintrag (Schlüssel und Wert) enthält.
Java HashMap-Beispiel: Buch
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } }Testen Sie es jetzt
Ausgabe:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6
Verwandte Themen
So iterieren Sie eine Karte in Java
So sortieren Sie HashMap in Java
Ladefaktor in HashMap
Funktionsweise von HashMap in Java | So funktioniert HashMap
Unterschied zwischen HashMap und Hashtable
So sortieren Sie HashMap nach Wert
vergleiche mit string
Unterschied zwischen HashSet und HashMap