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)Desafío
FácilEscribe un método llamado <strong>modifyMap</strong> que modifica un HashMap dado basado en condiciones específicas.
- Acepta un HashMap llamado
datadonde:- Las claves son de tipo
String. - Los valores son de tipo
Integer.
- Las claves son de tipo
- Acepta un String
key. - Acepta un Integer
newValue.
El método debe devolver el HashMap actualizado siguiendo:
- Si la clave existe en
datay tiene el mismo valor quenewValue, 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 existeAgregar o actualizar una clave:
users.put("newUser", "Admin"); // Agrega una nueva clave o actualiza la existentePrué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));
}
}
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
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras