Modificando Dicionários
Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 14 de 59.
Os HashMaps também suportam remover chaves e atualizá-las pelos métodos put(), remove() e replace().
Por exemplo, vamos popular um HashMap primeiro:
HashMap<String, String> users = new HashMap<>();
users.put("alice", "Admin");
users.put("bob", "User");Para remover uma chave:
users.remove("bob"); // Removes "bob"
System.out.println(users);
// {alice=Admin}Para atualizar uma chave:
users.replace("bob", "Guest");
// Updates bob to Guest
users.replace("Charlie", "Admin");
// Does nothing (key "Charlie" doesn't exist)Desafio
FácilEscreva um método chamado <strong>modifyMap</strong> que modifica um HashMap dado com base em condições específicas.
- Recebe um HashMap chamado
dataonde:- As chaves são do tipo
String. - Os valores são do tipo
Integer.
- As chaves são do tipo
- Recebe uma String
key. - Recebe um Integer
newValue.
O método deve retornar o HashMap atualizado seguindo:
- Se a chave existir em
datae tiver o mesmo valor quenewValue, use<strong>replace()</strong>mas aumente o valor em 1. - Se a chave existir mas tiver um valor diferente, remova-a.
- Se a chave não existir, adicione-a com
<strong>newValue</strong>.
Folha de consulta
Métodos do HashMap para modificar dados:
Remover uma chave:
users.remove("bob"); // Removes "bob" key-value pairAtualizar/substituir um valor:
users.replace("alice", "Guest"); // Updates existing key
users.replace("nonexistent", "Admin"); // Does nothing if key doesn't existAdicionar ou atualizar uma chave:
users.put("newUser", "Admin"); // Adds new key or updates existingExperimente você mesmo
// --- Módulos para converter string de hashmap em 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) {
// Escreva seu código aqui
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String hashMapString = scanner.nextLine();
String key = scanner.nextLine();
int newValue = scanner.nextInt();
// Converter String de HashMap para 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 lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Arrays Multidimensionais
Básicos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DResumo - Arrays 2DAdição e Subtração de MatrizesArrays EscalonadosArrays 3D e AlémPadrões Comuns de Arrays 2DResumo - Tudo Sobre Arrays2HashMap Parte 1
O que é um HashMap?Declarar um HashMapAcessando ValoresVerificar se a Chave ExisteModificando DicionáriosResumo - HashMap3HashMap Parte 2
Métodos do HashMapIterar com keySet()Iterar com entrySet()HashMap AninhadoResumo - Gerenciar ArmazémResumo - Operações do HashMap6Fluxo de Controle Avançado
Declarações RotuladasExpressão SwitchCorrespondência de PadrõesCláusulas de GuardaResumo - Fluxo de Controle9Projeto - Contador de Palavras Únicas
Entrada e Armazenamento de TextoProcessamento de Palavras