logo

Java HashMap

Java HashMap klasshierarki

Java HashMap class implementerar Map-gränssnittet som tillåter oss för att lagra nyckel och värdepar , där nycklar ska vara unika. Om du försöker infoga dubblettnyckeln kommer den att ersätta elementet i motsvarande nyckel. Det är lätt att utföra operationer med nyckelindexet som uppdatering, radering etc. HashMap-klassen finns ijava.utilpaket.

HashMap i Java är som den äldre Hashtable-klassen, men den är inte synkroniserad. Det tillåter oss att lagra null-elementen också, men det bör bara finnas en null-nyckel. Sedan Java 5 betecknas det somHashMap, där K står för nyckel och V för värde. Den ärver klassen AbstractMap och implementerar Map-gränssnittet.

Punkter att komma ihåg

  • Java HashMap innehåller värden baserade på nyckeln.
  • Java HashMap innehåller endast unika nycklar.
  • Java HashMap kan ha en nullnyckel och flera nullvärden.
  • Java HashMap är osynkroniserat.
  • Java HashMap upprätthåller ingen ordning.
  • Den initiala standardkapaciteten för Java HashMap-klassen är 16 med en belastningsfaktor på 0,75.

Hierarki för HashMap-klassen

Som visas i figuren ovan utökar HashMap-klassen AbstractMap-klassen och implementerar Map-gränssnittet.

HashMap-klassdeklaration

Låt oss se deklarationen för klassen java.util.HashMap.

mit full form
 public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 

HashMap klassparametrar

Låt oss se parametrarna för klassen java.util.HashMap.

    K: Det är den typ av nycklar som underhålls av denna karta.I: Det är typen av mappade värden.

Konstruktörer av Java HashMap-klassen

KonstruktörBeskrivning
HashMap()Den används för att konstruera en standard HashMap.
HashMap(Map m)Den används för att initiera hashkartan genom att använda elementen i det givna kartobjektet m.
HashMap (int kapacitet)Den används för att initialisera hashkartans kapacitet till det givna heltalsvärdet, kapacitet.
HashMap(int kapacitet, float loadFactor)Den används för att initiera både kapaciteten och belastningsfaktorn för hashkartan genom att använda dess argument.

Metoder för Java HashMap-klassen

MetodBeskrivning
void clear()Den används för att ta bort alla mappningar från denna karta.
boolean isEmpty()Den används för att returnera sant om denna karta inte innehåller några nyckel-värde-mappningar.
Object clone()Den används för att returnera en ytlig kopia av denna HashMap-instans: själva nycklarna och värdena är inte klonade.
Set entrySet()Den används för att returnera en samlingsvy av kartorna som finns i denna karta.
Ställ in keySet()Den används för att returnera en inställd vy av nycklarna som finns i denna karta.
V put(Objektnyckel, Objektvärde)Den används för att infoga en post i kartan.
void putAll(Map map)Den används för att infoga den angivna kartan i kartan.
V putIfAbsent(K-nyckel, V-värde)Den infogar det angivna värdet med den angivna nyckeln i kartan endast om det inte redan är specificerat.
V ta bort (objektnyckel)Den används för att radera en post för den angivna nyckeln.
boolean remove(Objektnyckel, Objektvärde)Den tar bort de angivna värdena med tillhörande specificerade nycklar från kartan.
V compute (K-nyckel, BiFunction remappingFunction)Den används för att 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).
V computeIfAbsent(K-tangent, FunktionsmappingFunction)Den används för att beräkna dess värde med hjälp av den givna mappningsfunktionen, om den angivna nyckeln inte redan är associerad med ett värde (eller är mappad till null), och matar in det i denna karta om inte null.
V computeIfPresent(K-nyckel, BiFunction remappingFunction)Den används för att beräkna en ny mappning givet nyckeln och dess nuvarande mappade värde om värdet för den angivna nyckeln är närvarande och inte är null.
boolean containsValue(Objektvärde)Denna metod returnerar true om något värde som är lika med värdet finns i kartan, annars returnerar false.
boolean containsKey(Objektnyckel)Denna metod returnerar true om någon nyckel som är lika med nyckeln finns inom kartan, annars returnerar false.
boolesk lika med(Objekt o)Den används för att jämföra det angivna objektet med kartan.
void forEach (BiConsumer action)Den utför den givna åtgärden för varje post i kartan tills alla poster har bearbetats eller åtgärden ger ett undantag.
V get(Objektnyckel)Denna metod returnerar objektet som innehåller värdet som är associerat med nyckeln.
V getOrDefault(Objektnyckel, V defaultValue)Den returnerar värdet som den angivna nyckeln är mappad till, eller defaultValue om kartan inte innehåller någon mappning för nyckeln.
boolean isEmpty()Denna metod returnerar true om kartan är tom; returnerar false om den innehåller minst en nyckel.
V sammanfoga (K-nyckel, V-värde, BiFunction remappingFunction)Om den angivna nyckeln inte redan är associerad med ett värde eller är associerad med null, associerar den med det givna icke-nullvärdet.
V ersätt (K-nyckel, V-värde)Den ersätter det angivna värdet för en angiven nyckel.
boolean replace(K-nyckel, V oldValue, V newValue)Det ersätter det gamla värdet med det nya värdet för en angiven nyckel.
void replaceAll (BiFunction-funktion)Den 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.
Samlingsvärden()Den returnerar en samlingsvy av värdena som finns i kartan.
int storlek()Denna metod returnerar antalet poster i kartan.

Java HashMap Exempel

Låt oss se ett enkelt exempel på HashMap för att lagra nyckel- och värdepar.

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

I det här exemplet lagrar vi heltal som nyckeln och sträng som värdet, så vi använderHashMapsom typen. Desätta()metoden infogar elementen i kartan.

För att få nyckel- och värdeelementen bör vi anropa metoderna getKey() och getValue(). DeMap.Entrygränssnittet innehåller getKey() och getValue() metoder. Men vi bör anropa entrySet()-metoden för Map-gränssnittet för att få instansen av Map.Entry.

Ingen dubblettnyckel på HashMap

Du kan inte lagra dubbletter av nycklar i HashMap. Men om du försöker lagra dubblettnyckel med ett annat värde kommer det att ersätta värdet.

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

Java HashMap exempel för att lägga till () element

Här ser vi olika sätt att infoga element.

 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 exempel för att ta bort() element

Här ser vi olika sätt att ta bort element.

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

Produktion:

 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-exempel för att ersätta()-element

Här ser vi olika sätt att ersätta element.

 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 

Skillnaden mellan HashSet och HashMap

HashSet innehåller bara värden medan HashMap innehåller en post (nyckel och värde).

Java HashMap Exempel: Bok

 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); } } } 
Testa det nu

Produktion:

 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 

Relaterade ämnen

Hur man itererar karta i Java

Hur man sorterar HashMap i Java

Belastningsfaktor i HashMap

Arbeta med HashMap i Java | Hur HashMap fungerar

Skillnaden mellan HashMap och Hashtable

Hur man sorterar HashMap efter värde

Skillnaden mellan HashSet och HashMap

Skillnaden mellan HashMap och TreeMap

Java Kartgränssnitt

java kartor