logo

Java-hashmap

Java HashMap-klassehiërarchie

Java Hash kaart class implementeert de kaartinterface waarmee we dit kunnen doen om sleutel- en waardepaar op te slaan , waarbij sleutels uniek moeten zijn. Als u de duplicaatsleutel probeert in te voegen, vervangt deze het element van de overeenkomstige sleutel. Het is gemakkelijk om bewerkingen uit te voeren met behulp van de sleutelindex, zoals bijwerken, verwijderen, enz. De klasse HashMap is te vinden in dejava.utilpakket.

HashMap in Java lijkt op de oudere Hashtable-klasse, maar is niet gesynchroniseerd. Hiermee kunnen we ook de nulelementen opslaan, maar er zou slechts één nulsleutel moeten zijn. Sinds Java 5 wordt dit aangeduid alsHash kaart, waarbij K staat voor sleutel en V voor waarde. Het erft de klasse AbstractMap en implementeert de Map-interface.

Punten om te onthouden

  • Java HashMap bevat waarden op basis van de sleutel.
  • Java HashMap bevat alleen unieke sleutels.
  • Java HashMap kan één nulsleutel en meerdere nulwaarden hebben.
  • Java HashMap is niet gesynchroniseerd.
  • Java HashMap onderhoudt geen volgorde.
  • De initiële standaardcapaciteit van de Java HashMap-klasse is 16 met een belastingsfactor van 0,75.

Hiërarchie van de HashMap-klasse

Zoals weergegeven in de bovenstaande afbeelding, breidt de klasse HashMap de klasse AbstractMap uit en implementeert de kaartinterface.

HashMap-klassedeclaratie

Laten we de declaratie voor de klasse java.util.HashMap bekijken.

hoeveel nullen in 1 miljard
 public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 

HashMap-klasseparameters

Laten we de parameters voor de klasse java.util.HashMap bekijken.

    K: Het is het type sleutels dat door deze kaart wordt onderhouden.IN: Het is het type toegewezen waarden.

Constructeurs van de Java HashMap-klasse

ConstructeurBeschrijving
Hash kaart()Het wordt gebruikt om een ​​standaard HashMap te construeren.
HashMap(Kaart m)Het wordt gebruikt om de hashkaart te initialiseren door de elementen van het gegeven Map-object m te gebruiken.
HashMap(int-capaciteit)Het wordt gebruikt om de capaciteit van de hashmap te initialiseren op de gegeven gehele waarde, capaciteit.
HashMap(int capaciteit, float loadFactor)Het wordt gebruikt om zowel de capaciteit als de belastingsfactor van de hash-kaart te initialiseren met behulp van de argumenten ervan.

Methoden van de Java HashMap-klasse

MethodeBeschrijving
leegte helder()Het wordt gebruikt om alle toewijzingen van deze kaart te verwijderen.
booleaanse waarde isLeeg()Het wordt gebruikt om waar te retourneren als deze kaart geen sleutel-waardetoewijzingen bevat.
Objectkloon()Het wordt gebruikt om een ​​oppervlakkige kopie van deze HashMap-instantie terug te geven: de sleutels en waarden zelf worden niet gekloond.
Stel entrySet() inHet wordt gebruikt om een ​​verzamelingsweergave te retourneren van de toewijzingen op deze kaart.
Stel sleutelSet() inHet wordt gebruikt om een ​​vaste weergave van de sleutels op deze kaart terug te geven.
V put(Objectsleutel, Objectwaarde)Het wordt gebruikt om een ​​item op de kaart in te voegen.
void putAll (kaartkaart)Het wordt gebruikt om de opgegeven kaart in de kaart in te voegen.
V putIfAbsent(K-sleutel, V-waarde)Het voegt de opgegeven waarde met de opgegeven sleutel alleen in de kaart in als deze nog niet is opgegeven.
V verwijderen (Objecttoets)Het wordt gebruikt om een ​​vermelding voor de opgegeven sleutel te verwijderen.
boolean remove(Objectsleutel, Objectwaarde)Het verwijdert de opgegeven waarden met de bijbehorende opgegeven sleutels van de kaart.
V compute (K-sleutel, BiFunction remappingFunction)Het wordt gebruikt om een ​​toewijzing te berekenen voor de opgegeven sleutel en de huidige toegewezen waarde (of null als er geen huidige toewijzing is).
V computeIfAbsent(K-sleutel, FunctietoewijzingFunctie)Het wordt gebruikt om de waarde ervan te berekenen met behulp van de gegeven toewijzingsfunctie, als de opgegeven sleutel nog niet aan een waarde is gekoppeld (of is toegewezen aan null), en deze in deze kaart invoert, tenzij null.
V computeIfPresent(K-sleutel, BiFunction remappingFunction)Het wordt gebruikt om een ​​nieuwe toewijzing te berekenen op basis van de sleutel en de huidige toegewezen waarde als de waarde voor de opgegeven sleutel aanwezig is en niet nul is.
booleaanse waarde bevatWaarde(Objectwaarde)Deze methode retourneert waar als er een waarde bestaat die gelijk is aan de waarde binnen de kaart, en retourneert anders false.
boolean containKey(Objectsleutel)Deze methode retourneert waar als er een sleutel bestaat die gelijk is aan de sleutel binnen de kaart, anders wordt onwaar geretourneerd.
Booleaanse waarde is gelijk aan(Object o)Het wordt gebruikt om het opgegeven object met de kaart te vergelijken.
void forEach(BiConsumer-actie)Het voert de gegeven actie uit voor elk item op de kaart totdat alle items zijn verwerkt of de actie een uitzondering genereert.
V get(Objectsleutel)Deze methode retourneert het object dat de waarde bevat die aan de sleutel is gekoppeld.
V getOrDefault(Objectsleutel, V standaardwaarde)Het retourneert de waarde waaraan de opgegeven sleutel is toegewezen, of defaultValue als de kaart geen toewijzing voor de sleutel bevat.
booleaanse waarde isLeeg()Deze methode retourneert true als de kaart leeg is; retourneert false als deze ten minste één sleutel bevat.
V samenvoegen (K-sleutel, V-waarde, BiFunction remappingFunction)Als de opgegeven sleutel nog niet aan een waarde is gekoppeld of aan null is gekoppeld, wordt deze aan de opgegeven niet-null-waarde gekoppeld.
V vervangen (K-sleutel, V-waarde)Het vervangt de opgegeven waarde voor een opgegeven sleutel.
boolean vervangen(K sleutel, V oudeWaarde, V nieuweWaarde)Het vervangt de oude waarde door de nieuwe waarde voor een opgegeven sleutel.
void ReplaceAll(BiFunction-functie)Het vervangt de waarde van elk item door het resultaat van het aanroepen van de gegeven functie voor dat item totdat alle items zijn verwerkt of de functie een uitzondering genereert.
Verzamelingswaarden()Het retourneert een verzamelingsweergave van de waarden op de kaart.
int-grootte()Deze methode retourneert het aantal vermeldingen op de kaart.

Java HashMap-voorbeeld

Laten we een eenvoudig voorbeeld bekijken van HashMap om sleutel- en waardeparen op te slaan.

 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()); } } } 
Test het nu
 Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes 

In dit voorbeeld slaan we Integer op als sleutel en String als waarde, dus gebruiken weHash kaartals soort. Deneerzetten()methode voegt de elementen in de kaart in.

Om de sleutel- en waarde-elementen te verkrijgen, moeten we de methoden getKey() en getValue() aanroepen. DeKaart.Invoerinterface bevat de getKey() En getWaarde() methoden. Maar we moeten de methode entrySet() van de Map-interface aanroepen om de instantie van Map.Entry op te halen.

Geen dubbele sleutel op HashMap

U kunt geen dubbele sleutels opslaan in HashMap. Als u echter een dubbele sleutel met een andere waarde probeert op te slaan, wordt de waarde vervangen.

 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()); } } } 
Test het nu
 Iterating Hashmap... 1 Grapes 2 Apple 3 Banana 

Java HashMap-voorbeeld om ()-elementen toe te voegen

Hier zien we verschillende manieren om elementen in te voegen.

 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-voorbeeld om elementen () te verwijderen

Hier zien we verschillende manieren om elementen te verwijderen.

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

Uitgang:

 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-voorbeeld om ()-elementen te vervangen

Hier zien we verschillende manieren om elementen te vervangen.

 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 

Verschil tussen HashSet en HashMap

HashSet bevat alleen waarden, terwijl HashMap een item (sleutel en waarde) bevat.

Java HashMap Voorbeeld: Boek

 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); } } } 
Test het nu

Uitgang:

 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 

Gerelateerde onderwerpen

Hoe kaart in Java te herhalen

Hoe HashMap in Java te sorteren

Belastingsfactor in HashMap

Werking van HashMap in Java | Hoe HashMap werkt

Verschil tussen HashMap en Hashtable

Hoe HashMap op waarde te sorteren

Verschil tussen HashSet en HashMap

Verschil tussen HashMap en TreeMap

Java-kaartinterface

overdrachtslogica registreren