Un mapa contiene valores según la clave, es decir, el par clave y valor. Cada par de clave y valor se conoce como entrada. Un mapa contiene claves únicas.
Un mapa es útil si tiene que buscar, actualizar o eliminar elementos en función de una clave.
Jerarquía de mapas de Java
Hay dos interfaces para implementar Map en Java: Map y SortedMap, y tres clases: HashMap, LinkedHashMap y TreeMap. La jerarquía de Java Map se detalla a continuación:
Un mapa no permite claves duplicadas, pero puede tener valores duplicados. HashMap y LinkedHashMap permiten claves y valores nulos, pero TreeMap no permite ninguna clave o valor nulo.
Un mapa no se puede atravesar, por lo que debe convertirlo en Conjunto usando juego de llaves() o conjunto de entrada() método.
Clase | Descripción |
---|---|
HashMap | HashMap es la implementación de Map, pero no mantiene ningún orden. |
LinkedHashMap | LinkedHashMap es la implementación de Map. Hereda la clase HashMap. Mantiene el orden de inserción. |
ÁrbolMapa | TreeMap es la implementación de Map y SortedMap. Mantiene un orden ascendente. |
Métodos útiles de la interfaz de mapas.
Método | Descripción |
---|---|
V put(Clave del objeto, Valor del objeto) | Se utiliza para insertar una entrada en el mapa. |
void putAll(Mapa mapa) | Se utiliza para insertar el mapa especificado en el mapa. |
V putIfAbsent (tecla K, valor V) | Inserta el valor especificado con la clave especificada en el mapa solo si aún no está especificado. |
V eliminar (clave de objeto) | Se utiliza para eliminar una entrada para la clave especificada. |
eliminación booleana (clave del objeto, valor del objeto) | Elimina los valores especificados con las claves especificadas asociadas del mapa. |
Establecer conjunto de claves() | Devuelve la vista Conjunto que contiene todas las claves. |
Colocar | Devuelve la vista Conjunto que contiene todas las claves y valores. |
vacío claro() | Se utiliza para restablecer el mapa. |
V cálculo (tecla K, función de reasignación BiFunction) | Se utiliza para calcular una asignación para la clave especificada y su valor asignado actual (o nulo si no hay una asignación actual). |
V ComputeIfAbsent (tecla K, función de mapeo de funciones) | Se utiliza para calcular su valor utilizando la función de mapeo dada, si la clave especificada aún no está asociada con un valor (o está asignada a nulo), y la ingresa en este mapa a menos que sea nula. |
V ComputeIfPresent (tecla K, función de reasignación BiFunction) | Se utiliza para calcular una nueva asignación dada la clave y su valor asignado actual si el valor de la clave especificada está presente y no es nulo. |
booleano contieneValor(Valor del objeto) | Este método devuelve verdadero si existe algún valor igual al valor dentro del mapa; de lo contrario, devuelve falso. |
booleano contiene clave (clave de objeto) | Este método devuelve verdadero si existe alguna clave igual a la clave dentro del mapa; de lo contrario, devuelve falso. |
booleano es igual (Objeto o) | Se utiliza para comparar el objeto especificado con el mapa. |
anular para cada uno (acción BiConsumer) | Realiza la acción dada para cada entrada en el mapa hasta que se hayan procesado todas las entradas o la acción genere una excepción. |
V get (clave de objeto) | Este método devuelve el objeto que contiene el valor asociado con la clave. |
V getOrDefault(Clave de objeto, V defaultValue) | Devuelve el valor al que está asignada la clave especificada, o defaultValue si el mapa no contiene ninguna asignación para la clave. |
int código hash() | Devuelve el valor del código hash para el mapa. |
booleano está vacío() | Este método devuelve verdadero si el mapa está vacío; devuelve falso si contiene al menos una clave. |
Combinación de V (tecla K, valor V, función de reasignación BiFunction) | Si la clave especificada aún no está asociada con un valor o está asociada con un valor nulo, la asocia con el valor no nulo dado. |
Reemplazo de V (tecla K, valor V) | Reemplaza el valor especificado por una clave especificada. |
reemplazo booleano (tecla K, V oldValue, V newValue) | Reemplaza el valor anterior con el nuevo valor para una clave especificada. |
anular reemplazar todo (función BiFunction) | Reemplaza el valor de cada entrada con el resultado de invocar la función dada en esa entrada hasta que se hayan procesado todas las entradas o la función arroje una excepción. |
Valores de colección() | Devuelve una vista de colección de los valores contenidos en el mapa. |
tamaño entero() | Este método devuelve el número de entradas en el mapa. |
Interfaz de entrada de mapa
La entrada es la subinterfaz de Map. Entonces accederemos a él por el nombre de Map.Entry. Devuelve una vista de colección del mapa, cuyos elementos son de esta clase. Proporciona métodos para obtener clave y valor.
Métodos de la interfaz Map.Entry
Método | Descripción |
---|---|
K obtener clave() | Se utiliza para obtener una clave. |
V obtenerValor() | Se utiliza para obtener valor. |
int código hash() | Se utiliza para obtener hashCode. |
V setValue (valor V) | Se utiliza para reemplazar el valor correspondiente a esta entrada con el valor especificado. |
booleano es igual (Objeto o) | Se utiliza para comparar el objeto especificado con los otros objetos existentes. |
estático | Devuelve un comparador que compara los objetos en orden natural en clave. |
Comparador estático | Devuelve un comparador que compara los objetos por clave utilizando el Comparador dado. |
estático | Devuelve un comparador que compara los objetos en orden natural según su valor. |
Comparador estático | Devuelve un comparador que compara los objetos por valor utilizando el comparador dado. |
Ejemplo de mapa de Java: no genérico (estilo antiguo)
//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()); } } }
Producción:
1 Amit 2 Jai 5 Rahul 6 Amit
Ejemplo de mapa de Java: genérico (nuevo estilo)
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()); } } }
Producción:
102 Rahul 100 Amit 101 Vijay
Ejemplo de mapa de Java: compararByKey()
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); } }
Producción:
100=Amit 101=Vijay 102=Rahul
Ejemplo de mapa de Java: compararByKey() en orden descendente
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); } }
Producción:
102=Rahul 101=Vijay 100=Amit
Ejemplo de mapa de Java: compararByValue()
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); } }
Producción:
100=Amit 102=Rahul 101=Vijay
Ejemplo de mapa de Java: compararByValue() en orden descendente
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); } }
Producción:
101=Vijay 102=Rahul 100=Amit