Menu
Coddy logo textTech

Modificar Diccionarios

Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 14 de 59.

Los HashMaps también admiten eliminar claves y actualizarlas mediante los métodos put(), remove() y replace().

Por ejemplo, poblemos primero un HashMap:

HashMap<String, String> users = new HashMap<>();
users.put("alice", "Admin");
users.put("bob", "User");

Para eliminar una clave:

users.remove("bob"); // Removes "bob"
System.out.println(users);
// {alice=Admin}

Para actualizar una clave:

users.replace("bob", "Guest");
// Updates bob to Guest

users.replace("Charlie", "Admin");
// Does nothing (key "Charlie" doesn't exist)
challenge icon

Desafío

Fácil

Escribe un método llamado <strong>modifyMap</strong> que modifica un HashMap dado basado en condiciones específicas.

  1. Acepta un HashMap llamado data donde:
    • Las claves son de tipo String.
    • Los valores son de tipo Integer.
  2. Acepta un String key.
  3. Acepta un Integer newValue.

El método debe devolver el HashMap actualizado siguiendo:

  • Si la clave existe en data y tiene el mismo valor que newValue, usa <strong>replace()</strong> pero incrementa el valor en 1.
  • Si la clave existe pero tiene un valor diferente, elimínala.
  • Si la clave no existe, agrégala con <strong>newValue</strong>.

Hoja de referencia

Métodos de HashMap para modificar datos:

Eliminar una clave:

users.remove("bob"); // Elimina el par clave-valor de "bob"

Actualizar/reemplazar un valor:

users.replace("alice", "Guest"); // Actualiza la clave existente
users.replace("nonexistent", "Admin"); // No hace nada si la clave no existe

Agregar o actualizar una clave:

users.put("newUser", "Admin"); // Agrega una nueva clave o actualiza la existente

Pruébalo tú mismo

// --- Módulos para convertir cadena de hashmap a hashmap ---
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
// -----------------------------
import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static HashMap<String, Integer> modifyMap(HashMap<String, Integer> data, String key, int newValue) {
        // Escribe tu código aquí
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String hashMapString = scanner.nextLine();
        String key = scanner.nextLine();
        int newValue = scanner.nextInt();

        // Convertir cadena de HashMap a HashMap
        Type mapType = new TypeToken<HashMap<String, Integer>>(){}.getType();
        HashMap<String, Integer> data = new Gson().fromJson(hashMapString, mapType);

        HashMap<String, Integer> result = modifyMap(data, key, newValue);
        System.out.println(new Gson().toJson(result));
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo