Java HashMap klasse implementerer kortgrænsefladen, som tillader os at gemme nøgle og værdipar , hvor nøgler skal være unikke. Hvis du forsøger at indsætte duplikatnøglen, vil den erstatte elementet i den tilsvarende nøgle. Det er nemt at udføre operationer ved hjælp af nøgleindekset som opdatering, sletning osv. HashMap-klassen findes ijava.utilpakke.
HashMap i Java er ligesom den gamle Hashtable-klasse, men den er ikke synkroniseret. Det giver os også mulighed for at gemme null-elementerne, men der bør kun være én null-nøgle. Siden Java 5 er det betegnet somHashMap, hvor K står for nøgle og V for værdi. Det arver AbstractMap-klassen og implementerer kortgrænsefladen.
Punkter at huske
- Java HashMap indeholder værdier baseret på nøglen.
- Java HashMap indeholder kun unikke nøgler.
- Java HashMap kan have én null-nøgle og flere null-værdier.
- Java HashMap er ikke-synkroniseret.
- Java HashMap opretholder ingen orden.
- Den oprindelige standardkapacitet for Java HashMap-klassen er 16 med en belastningsfaktor på 0,75.
Hierarki af HashMap-klassen
Som vist i ovenstående figur, udvider HashMap-klassen AbstractMap-klassen og implementerer Map-grænsefladen.
HashMap-klassedeklaration
Lad os se erklæringen for java.util.HashMap-klassen.
netværkslag i computernetværk
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
HashMap klasse parametre
Lad os se parametrene for java.util.HashMap-klassen.
Konstruktører af Java HashMap-klassen
Konstruktør | Beskrivelse |
---|---|
HashMap() | Det bruges til at konstruere et standard HashMap. |
HashMap(Kort m) | Det bruges til at initialisere hash-kortet ved at bruge elementerne i det givne kortobjekt m. |
HashMap (int kapacitet) | Det bruges til at initialisere hashkortets kapacitet til den givne heltalsværdi, kapacitet. |
HashMap(int kapacitet, float loadFactor) | Det bruges til at initialisere både kapaciteten og belastningsfaktoren for hashkortet ved at bruge dets argumenter. |
Metoder til Java HashMap-klassen
Metode | Beskrivelse |
---|---|
void clear() | Det bruges til at fjerne alle kortlægninger fra dette kort. |
boolsk er tom() | Det bruges til at returnere sandt, hvis dette kort ikke indeholder nøgleværditilknytninger. |
Objekt klon() | Det bruges til at returnere en overfladisk kopi af denne HashMap-instans: selve nøglerne og værdierne klones ikke. |
Indstil entrySet() | Det bruges til at returnere en samlingsvisning af kortene på dette kort. |
Indstil keySet() | Den bruges til at returnere en fast visning af nøglerne på dette kort. |
V put(Objektnøgle, Objektværdi) | Det bruges til at indsætte en post i kortet. |
void putAll(Kortkort) | Det bruges til at indsætte det angivne kort i kortet. |
V putIfFraværende(K-nøgle, V-værdi) | Den indsætter kun den angivne værdi med den angivne nøgle i kortet, hvis den ikke allerede er angivet. |
V fjern (objektnøgle) | Den bruges til at slette en post for den angivne nøgle. |
boolesk fjern (objektnøgle, objektværdi) | Det fjerner de angivne værdier med de tilhørende specificerede nøgler fra kortet. |
V compute (K-tast, BiFunction remappingFunction) | Den bruges til at beregne en mapping for den angivne nøgle og dens aktuelle kortlagte værdi (eller null, hvis der ikke er nogen aktuel mapping). |
V computeIfAbsent(K-tast, FunktionsmappingFunction) | Den bruges til at beregne dens værdi ved hjælp af den givne kortlægningsfunktion, hvis den angivne nøgle ikke allerede er knyttet til en værdi (eller er afbildet til null), og indtaster den i dette kort, medmindre den er null. |
V computeIfPresent(K-nøgle, BiFunction remappingFunction) | Den bruges til at beregne en ny mapping givet nøglen og dens aktuelle tilknyttede værdi, hvis værdien for den angivne nøgle er til stede og ikke er nul. |
boolean containsValue(Objektværdi) | Denne metode returnerer sand, hvis der findes en værdi svarende til værdien i kortet, ellers returnerer den falsk. |
boolean containsKey(Objektnøgle) | Denne metode returnerer sand, hvis der findes en nøgle svarende til nøglen i kortet, ellers returnerer den falsk. |
boolesk lig (Objekt o) | Det bruges til at sammenligne det specificerede objekt med kortet. |
void forEach (BiConsumer action) | Den udfører den givne handling for hver post i kortet, indtil alle poster er blevet behandlet, eller handlingen kaster en undtagelse. |
V get(Objektnøgle) | Denne metode returnerer det objekt, der indeholder den værdi, der er knyttet til nøglen. |
V getOrDefault(Objektnøgle, V defaultValue) | Det returnerer den værdi, som den angivne nøgle er knyttet til, eller defaultValue, hvis kortet ikke indeholder nogen tilknytning til nøglen. |
boolsk er tom() | Denne metode returnerer sand, hvis kortet er tomt; returnerer falsk, hvis den indeholder mindst én nøgle. |
V fletning (K nøgle, V værdi, BiFunction remapping Function) | Hvis den angivne nøgle ikke allerede er knyttet til en værdi eller er knyttet til null, knytter den til den givne ikke-nullværdi. |
V erstatte (K nøgle, V værdi) | Den erstatter den angivne værdi for en specificeret nøgle. |
boolesk erstatning (K-tast, V oldValue, V newValue) | Den erstatter den gamle værdi med den nye værdi for en specificeret nøgle. |
void replaceAll (BiFunction-funktion) | Den erstatter hver posts værdi med resultatet af at kalde den givne funktion på denne post, indtil alle poster er blevet behandlet, eller funktionen afgiver en undtagelse. |
Samlingsværdier() | Det returnerer en samlingsvisning af værdierne på kortet. |
int størrelse() | Denne metode returnerer antallet af poster på kortet. |
Java HashMap eksempel
Lad os se et simpelt eksempel på HashMap til at gemme nøgle- og værdipar.
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 det nu
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
I dette eksempel gemmer vi heltal som nøglen og streng som værdien, så vi brugerHashMapsom typen. Detsætte()metode indsætter elementerne i kortet.
For at få nøgle- og værdielementerne skal vi kalde metoderne getKey() og getValue(). DetKort.Entrygrænsefladen indeholder getKey() og getValue() metoder. Men vi bør kalde entrySet()-metoden til Map-grænsefladen for at få forekomsten af Map.Entry.
Ingen dubletnøgle på HashMap
Du kan ikke gemme duplikerede nøgler i HashMap. Men hvis du forsøger at gemme dubletnøgle med en anden værdi, vil den erstatte værdien.
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 det nu
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Java HashMap eksempel for at tilføje() elementer
Her ser vi forskellige måder at indsætte elementer på.
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 eksempel for at fjerne() elementer
Her ser vi forskellige måder at fjerne elementer på.
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 eksempel for at erstatte() elementer
Her ser vi forskellige måder at erstatte elementer på.
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
Forskellen mellem HashSet og HashMap
HashSet indeholder kun værdier, mens HashMap indeholder en indgang (nøgle og værdi).
Java HashMap Eksempel: Bog
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 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
Relaterede emner
Belastningsfaktor i HashMap
Arbejde med HashMap i Java | Sådan fungerer HashMap
Forskellen mellem HashMap og Hashtable
Sådan sorteres HashMap efter værdi
Forskellen mellem HashSet og HashMap
Forskellen mellem HashMap og TreeMap
alfabet af tal