Изменение словарей
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 14 из 59.
HashMaps также поддерживают удаление ключей и обновление их. Методы put(), remove() и replace().
Например, давайте сначала заполним HashMap:
HashMap<String, String> users = new HashMap<>();
users.put("alice", "Admin");
users.put("bob", "User");Чтобы удалить ключ:
users.remove("bob"); // Удаляет "bob"
System.out.println(users);
// {alice=Admin}Чтобы обновить ключ:
users.replace("bob", "Guest");
// Updates bob to Guest
users.replace("Charlie", "Admin");
// Does nothing (key "Charlie" doesn't exist)Задание
ЛегкоНапишите метод с именем <strong>modifyMap</strong>, который изменяет заданный HashMap на основе конкретных условий.
- Принимает HashMap с именем
data, где:- Ключи имеют тип
String. - Значения имеют тип
Integer.
- Ключи имеют тип
- Принимает String
key. - Принимает Integer
newValue.
Метод должен возвращать обновленный HashMap, выполняя следующие действия:
- Если ключ существует в
dataи имеет такое же значение, какnewValue, используйте<strong>replace()</strong>, но увеличьте значение на 1. - Если ключ существует, но имеет другое значение, удалите его.
- Если ключ не существует, добавьте его с
<strong>newValue</strong>.
Шпаргалка
Методы HashMap для изменения данных:
Удалить ключ:
users.remove("bob"); // Removes "bob" key-value pairОбновить/заменить значение:
users.replace("alice", "Guest"); // Updates existing key
users.replace("nonexistent", "Admin"); // Does nothing if key doesn't existДобавить или обновить ключ:
users.put("newUser", "Admin"); // Adds new key or updates existingПопробуйте сами
// --- Модули для преобразования строки HashMap в 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) {
// Напишите свой код здесь
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String hashMapString = scanner.nextLine();
String key = scanner.nextLine();
int newValue = scanner.nextInt();
// Преобразование строки HashMap в 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));
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов