Вложенный HashMap
Часть раздела Логика и управление потоком путешествия по Java на Coddy — урок 19 из 59.
Вложенная HashMap — это HashMap, значения которой сами являются HashMap. Это позволяет организовывать сложные данные иерархически. Например, вы можете иметь внешнюю HashMap, которая сопоставляет категории (например, «Electronics» или «Furniture») с внутренними HashMap, которые содержат продукты и их цены.
Создайте вложенную HashMap: категории -> (товары -> цены)
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Добавьте категорию "Electronics" с пустой внутренней HashMap
inventory.put("Electronics", new HashMap<>());Добавьте элемент "Laptop" с ценой 1200 в "Electronics"
inventory.get("Electronics").put("Laptop", 1200);Проверьте, пуст ли внешний словарь, и выведите его размер
System.out.println(inventory.isEmpty());
// Output: false
System.out.println(inventory.size());
// Output: 1В этом примере внешняя map имеет один ключ ("Electronics"), который отображает внутренний HashMap, содержащий ключ "Laptop" и его значение 1200.
Задание
ЛегкоСоздайте метод с именем <b>printNestedInventory</b>, который принимает вложенную HashMap под названием inventory в качестве входного параметра. В этом инвентаре:
- Ключи — это категории (например, "Electronics", "Furniture").
- Значения — это внутренние HashMap, где ключи — это названия продуктов, а значения — их цены.
Ваш метод должен выводить инвентарь в следующем формате:
- Для каждой категории выведите
Category: <name> - Если категория имеет продукты, выведите каждый как
Product: <name>, Price: <price>(с отступом в 2 пробела) - Если категория не имеет продуктов, выведите
(No products)(с отступом в 2 пробела)
Пример вывода:
Category: Electronics
Product: Laptop, Price: 1200
Product: Smartphone, Price: 800
Category: Furniture
Product: Chair, Price: 50
Product: Table, Price: 150
Category: EmptyCategory
(No products)Примечание: HashMap не гарантирует порядок итерации, поэтому порядок категорий и продуктов в вашем выводе может отличаться от примера выше — это ожидаемо.
Примечание: Вам потребуется импортировать java.util.Map в дополнение к другим предоставленным импортам.
Шпаргалка
Вложенная HashMap — это HashMap, значениями которой сами являются HashMap, что позволяет организовывать данные иерархически.
Создайте вложенную HashMap:
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Добавьте категорию с пустой внутренней HashMap:
inventory.put("Electronics", new HashMap<>());Добавьте элемент во внутреннюю HashMap:
inventory.get("Electronics").put("Laptop", 1200);Проверьте, пуста ли внешняя HashMap, и получите её размер:
System.out.println(inventory.isEmpty()); // false
System.out.println(inventory.size()); // 1Попробуйте сами
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void printNestedInventory(HashMap<String, HashMap<String, Integer>> inventory) {
// Перебираем каждую категорию во внешнем HashMap
// Для каждой категории выводим "Category: <name>"
// Если внутренняя map пуста, выводим " (No products)"
// Иначе перебираем каждый продукт и выводим " Product: <name>, Price: <price>"
// Напишите код здесь
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Преобразуем JSON-строку во вложенную HashMap
Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);
printNestedInventory(inventory);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка слов