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