Un mapa conté valors basats en la clau, és a dir, la parella clau i valor. Cada parell de claus i valors es coneix com a entrada. Un mapa conté claus úniques.
Un mapa és útil si cal cercar, actualitzar o eliminar elements a partir d'una clau.
Jerarquia de mapes de Java
Hi ha dues interfícies per implementar Map en java: Map i SortedMap, i tres classes: HashMap, LinkedHashMap i TreeMap. La jerarquia de Java Map es mostra a continuació:
Un mapa no permet claus duplicades, però podeu tenir valors duplicats. HashMap i LinkedHashMap permeten claus i valors nuls, però TreeMap no permet cap clau o valor nul.
No es pot recórrer un mapa, de manera que l'heu de convertir en Set usant keySet() o entrySet() mètode.
Classe | Descripció |
---|---|
HashMap | HashMap és la implementació de Map, però no manté cap ordre. |
LinkedHashMap | LinkedHashMap és la implementació de Map. Hereta la classe HashMap. Manté l'ordre d'inserció. |
TreeMap | TreeMap és la implementació de Map i SortedMap. Manté l'ordre ascendent. |
Mètodes útils de la interfície de mapes
Mètode | Descripció |
---|---|
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. |
Estableix keySet() | Retorna la vista Set que conté totes les claus. |
Conjunt | Retorna la vista Set que conté totes les claus i valors. |
buit clar () | S'utilitza per restablir el 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. |
int hashCode() | Retorna el valor del codi hash per al mapa |
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. |
Mapa.Interfície d'entrada
L'entrada és la subinterfície de Map. Per tant, hi accedirem mitjançant el nom de l'entrada del mapa. Retorna una vista de col·lecció del mapa, els elements del qual són d'aquesta classe. Proporciona mètodes per obtenir clau i valor.
Mètodes de la interfície Map.Entry
Mètode | Descripció |
---|---|
K getKey() | S'utilitza per obtenir una clau. |
V getValue() | S'utilitza per obtenir valor. |
int hashCode() | S'utilitza per obtenir hashCode. |
V setValue (valor V) | S'utilitza per substituir el valor corresponent a aquesta entrada pel valor especificat. |
booleà iguals (Objecte o) | S'utilitza per comparar l'objecte especificat amb els altres objectes existents. |
estàtica | Retorna un comparador que compara els objectes en ordre natural a la clau. |
Comparador estàtic | Retorna un comparador que compara els objectes per clau utilitzant el comparador donat. |
estàtica | Retorna un comparador que compara els objectes en ordre natural amb el valor. |
Comparador estàtic | Retorna un comparador que compara els objectes per valor mitjançant el comparador donat. |
Exemple de mapa de Java: no genèric (estil antic)
//Non-generic import java.util.*; public class MapExample1 { public static void main(String[] args) { Map map=new HashMap(); //Adding elements to map map.put(1,'Amit'); map.put(5,'Rahul'); map.put(2,'Jai'); map.put(6,'Amit'); //Traversing Map Set set=map.entrySet();//Converting to Set so that we can traverse Iterator itr=set.iterator(); while(itr.hasNext()){ //Converting to Map.Entry so that we can get key and value separately Map.Entry entry=(Map.Entry)itr.next(); System.out.println(entry.getKey()+' '+entry.getValue()); } } }
Sortida:
1 Amit 2 Jai 5 Rahul 6 Amit
Exemple de mapa de Java: genèric (estil nou)
import java.util.*; class MapExample2{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Elements can traverse in any order for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
Sortida:
102 Rahul 100 Amit 101 Vijay
Exemple de mapa de Java: comparingByKey()
import java.util.*; class MapExample3{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey()) //Performs an action for each element of this stream .forEach(System.out::println); } }
Sortida:
100=Amit 101=Vijay 102=Rahul
Exemple de mapa de Java: comparingByKey() en ordre descendent
import java.util.*; class MapExample4{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } }
Sortida:
102=Rahul 101=Vijay 100=Amit
Exemple de mapa de Java: comparingByValue()
import java.util.*; class MapExample5{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue()) //Performs an action for each element of this stream .forEach(System.out::println); } }
Sortida:
100=Amit 102=Rahul 101=Vijay
Exemple de mapa de Java: comparingByValue() en ordre descendent
import java.util.*; class MapExample6{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } }
Sortida:
101=Vijay 102=Rahul 100=Amit