Sobes.tech
Junior

Cuéntame sobre la colección Map en Java y sus características.

sobes.tech AI

Respuesta de la IA

Map — es una interfaz en Java Collection Framework que representa una colección de pares "clave-valor". Las claves son únicas, pero los valores pueden repetirse.

Características principales:

  • La clave se usa para acceder al valor correspondiente.
  • La misma clave no puede ser añadida dos veces. Al intentar añadir una clave existente, el valor antiguo se reemplaza por el nuevo.
  • Map no hereda de la interfaz Collection. Tiene sus propios métodos para trabajar con pares "clave-valor".
  • El orden de los pares "clave-valor" puede variar dependiendo de la implementación específica.

Implementaciones populares de Map:

  • HashMap: No garantiza el orden de los elementos. Ofrece un alto rendimiento para la mayoría de las operaciones (inserción, obtención, eliminación) en ausencia de conflictos de hash.
  • LinkedHashMap: Almacena los elementos en el orden en que fueron añadidos (o en orden de acceso, si está configurado de esa manera).
  • TreeMap: Almacena los elementos en orden ordenado por la clave (orden natural o proporcionado por un comparador). Ofrece tiempo logarítmico para la mayoría de las operaciones.

Ejemplos de métodos:

// Obtener valor por clave
Object value = map.get(key);

// Añadir o actualizar par clave-valor
Object oldValue = map.put(key, value);

// Eliminar par por clave
Object removedValue = map.remove(key);

// Comprobar si existe una clave
boolean containsKey = map.containsKey(key);

// Comprobar si existe un valor
boolean containsValue = map.containsValue(value);

// Obtener conjunto de todas las claves
Set<KeyType> keys = map.keySet();

// Obtener colección de todos los valores
Collection<ValueType> values = map.values();

// Obtener conjunto de todas las entradas (pares clave-valor)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Obtener tamaño del Map
int size = map.size();

Uso de Map.Entry durante la iteración:

// Iterar sobre el conjunto de entradas
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}