Java HashMap class implementa la interfície Map que ens permet per emmagatzemar el parell de claus i valors , on les claus han de ser úniques. Si intenteu inserir la clau duplicada, substituirà l'element de la clau corresponent. És fàcil realitzar operacions utilitzant l'índex de claus com ara l'actualització, la supressió, etc. La classe HashMap es troba a lajava.utilpaquet.
HashMap a Java és com la classe Hashtable heretada, però no està sincronitzada. També ens permet emmagatzemar els elements nuls, però només hi hauria d'haver una clau nul·la. Des de Java 5, es denota comHashMap, on K representa la clau i V el valor. Hereta la classe AbstractMap i implementa la interfície Map.
Punts a recordar
- Java HashMap conté valors basats en la clau.
- Java HashMap només conté claus úniques.
- Java HashMap pot tenir una clau nul·la i diversos valors nuls.
- Java HashMap no està sincronitzat.
- Java HashMap no manté cap ordre.
- La capacitat inicial predeterminada de la classe Java HashMap és 16 amb un factor de càrrega de 0,75.
Jerarquia de la classe HashMap
Com es mostra a la figura anterior, la classe HashMap amplia la classe AbstractMap i implementa la interfície Map.
Declaració de classe HashMap
Vegem la declaració de la classe java.util.HashMap.
denominació de les convencions de Java
public class HashMap extends AbstractMap implements Map, Cloneable, Serializable
Paràmetres de la classe HashMap
Vegem els paràmetres de la classe java.util.HashMap.
Constructors de la classe Java HashMap
Constructor | Descripció |
---|---|
HashMap() | S'utilitza per construir un HashMap predeterminat. |
HashMap(Mapa m) | S'utilitza per inicialitzar el mapa hash utilitzant els elements de l'objecte Map donat m. |
HashMap (capacitat int) | S'utilitza per inicialitzar la capacitat del mapa hash al valor enter donat, capacitat. |
HashMap (capacitat int, factor de càrrega flotant) | S'utilitza per inicialitzar tant la capacitat com el factor de càrrega del mapa hash mitjançant els seus arguments. |
Mètodes de classe Java HashMap
Mètode | Descripció |
---|---|
buit clar () | S'utilitza per eliminar tots els mapes d'aquest mapa. |
booleà és buit () | S'utilitza per retornar true si aquest mapa no conté assignacions de valor-clau. |
Clon d'objecte() | S'utilitza per retornar una còpia superficial d'aquesta instància de HashMap: les claus i els valors no es clonen. |
Estableix entrySet() | S'utilitza per retornar una vista de col·lecció dels mapes continguts en aquest mapa. |
Estableix keySet() | S'utilitza per retornar una vista conjunta de les claus contingudes en aquest mapa. |
V put(clau de l'objecte, valor de l'objecte) | S'utilitza per inserir una entrada al mapa. |
void putAll (mapa del mapa) | S'utilitza per inserir el mapa especificat al mapa. |
V putIfAbsent (clau K, valor V) | Insereix el valor especificat amb la clau especificada al mapa només si encara no està especificat. |
V elimina (clau d'objecte) | S'utilitza per eliminar una entrada per a la clau especificada. |
eliminació booleana (clau de l'objecte, valor de l'objecte) | Elimina els valors especificats amb les claus especificades associades del mapa. |
Càlcul V (tecla K, funció de reasignació de BiFunction) | S'utilitza per calcular un mapeig per a la clau especificada i el seu valor assignat actual (o nul si no hi ha mapeig actual). |
V computeIfAbsent (tecla K, funció mappingFunction) | S'utilitza per calcular el seu valor mitjançant la funció de mapeig donada, si la clau especificada encara no està associada a un valor (o està assignada a nul), i l'introdueix en aquest mapa tret que sigui nul. |
V computeIfPresent (tecla K, funció de reasignació de BiFunction) | S'utilitza per calcular una assignació nova donada la clau i el seu valor assignat actual si el valor de la clau especificada és present i no és nul. |
boolean containsValue (Valor de l'objecte) | Aquest mètode retorna true si hi ha algun valor igual al valor dins del mapa, en cas contrari retorna false. |
boolean containsKey (clau d'objecte) | Aquest mètode retorna true si alguna clau igual a la clau existeix dins del mapa, en cas contrari retorna false. |
booleà iguals (Objecte o) | S'utilitza per comparar l'objecte especificat amb el mapa. |
void forEach (acció biconsumidor) | Realitza l'acció donada per a cada entrada del mapa fins que s'han processat totes les entrades o l'acció genera una excepció. |
V get (clau d'objecte) | Aquest mètode retorna l'objecte que conté el valor associat a la clau. |
V getOrDefault (clau d'objecte, V defaultValue) | Retorna el valor al qual està assignada la clau especificada, o defaultValue si el mapa no conté cap assignació per a la clau. |
booleà és buit () | Aquest mètode retorna true si el mapa està buit; retorna false si conté almenys una clau. |
Combinació V (clau K, valor V, funció de reasignació de BiFunction) | Si la clau especificada encara no està associada amb un valor o està associada amb null, l'associa amb el valor no nul donat. |
Reemplaça V (clau K, valor V) | Substitueix el valor especificat per a una clau especificada. |
substitució booleana (clau K, V valor antic, V valor nou) | Substitueix el valor antic amb el nou valor per a una clau especificada. |
void replaceAll (funció BiFunction) | Substitueix el valor de cada entrada amb el resultat d'invocar la funció donada en aquesta entrada fins que s'hagin processat totes les entrades o la funció llança una excepció. |
Valors de la col·lecció() | Retorna una vista de col·lecció dels valors continguts al mapa. |
mida int () | Aquest mètode retorna el nombre d'entrades al mapa. |
Exemple de Java HashMap
Vegem un exemple senzill de HashMap per emmagatzemar el parell de claus i valors.
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()); } } }Prova-ho ara
Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes
En aquest exemple, estem emmagatzemant Integer com a clau i String com a valor, de manera que estem utilitzantHashMapcom el tipus. Elposar()El mètode insereix els elements al mapa.
Per obtenir els elements clau i valor, hauríem de cridar als mètodes getKey() i getValue(). ElMapa.Entradala interfície conté getKey() i getValue() mètodes. Però, hauríem de cridar al mètode entrySet() de la interfície Map per obtenir la instància de Map.Entry.
No hi ha clau duplicada a HashMap
No podeu emmagatzemar claus duplicades a HashMap. Tanmateix, si intenteu emmagatzemar la clau duplicada amb un altre valor, substituirà el valor.
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()); } } }Prova-ho ara
Iterating Hashmap... 1 Grapes 2 Apple 3 Banana
Exemple de Java HashMap per afegir elements ().
Aquí, veiem diferents maneres d'inserir elements.
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
Exemple de Java HashMap per eliminar elements ().
Aquí, veiem diferents maneres d'eliminar elements.
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); } }
Sortida:
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}
Exemple de Java HashMap per substituir elements ().
Aquí, veiem diferents maneres de substituir elements.
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
Diferència entre HashSet i HashMap
HashSet només conté valors, mentre que HashMap conté una entrada (clau i valor).
Java HashMap Exemple: llibre
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); } } }Prova-ho ara
Sortida:
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
Temes relacionats
Factor de càrrega a HashMap
bucle for a java
Funcionament de HashMap a Java | Com funciona HashMap
Diferència entre HashMap i Hashtable
Com ordenar HashMap per valor
Diferència entre HashSet i HashMap