Zagnieżdżona HashMap
Część sekcji Logika i przepływ sterowania ścieżki Java w Coddy. Lekcja 19 z 59.
Zagnieżdżona HashMap to HashMap, której wartościami są inne HashMap. Dzięki temu możesz organizować złożone dane hierarchicznie. Na przykład możesz mieć zewnętrzną HashMap, która mapuje kategorie (takie jak "Electronics" lub "Furniture") na wewnętrzne HashMap zawierające produkty i ich ceny.
Utwórz zagnieżdżoną HashMap: kategorie -> (przedmioty -> ceny)
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Dodaj kategorię „Electronics” z pustą wewnętrzną mapą HashMap
inventory.put("Electronics", new HashMap<>());Dodaj element „Laptop” o cenie 1200 do „Electronics”
inventory.get("Electronics").put("Laptop", 1200);Sprawdź, czy zewnętrzna mapa jest pusta, i wypisz jej rozmiar
System.out.println(inventory.isEmpty());
// Wynik: false
System.out.println(inventory.size());
// Wynik: 1W tym przykładzie zewnętrzna mapa ma jeden klucz („Electronics”), który wskazuje na wewnętrzną HashMap zawierającą klucz „Laptop” i jego wartość 1200.
Wyzwanie
ŁatwyUtwórz metodę o nazwie <b>printNestedInventory</b>, która jako dane wejściowe przyjmuje zagnieżdżoną HashMap o nazwie inventory. W tej strukturze:
- Kluczami są kategorie (np. "Electronics", "Furniture").
- Wartościami są wewnętrzne HashMap, w których kluczami są nazwy produktów, a wartościami ich ceny.
Twoja metoda powinna wypisać zawartość struktury w następującym formacie:
- Dla każdej kategorii wypisz
Category: <name> - Jeśli kategoria zawiera produkty, wypisz każdy z nich jako
Product: <name>, Price: <price>(z wcięciem wynoszącym 2 spacje) - Jeśli kategoria nie zawiera produktów, wypisz
(No products)(z wcięciem wynoszącym 2 spacje)
Przykładowy wynik:
Category: Electronics
Product: Laptop, Price: 1200
Product: Smartphone, Price: 800
Category: Furniture
Product: Chair, Price: 50
Product: Table, Price: 150
Category: EmptyCategory
(No products)Uwaga: HashMap nie gwarantuje kolejności iteracji, dlatego kolejność kategorii i produktów w wyniku może różnić się od podanej w przykładzie. To oczekiwane zachowanie.
Uwaga: Oprócz pozostałych podanych importów musisz zaimportować java.util.Map.
Spróbuj swoich sił
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) {
// Przejdź przez każdą kategorię w zewnętrznym HashMap
// Dla każdej kategorii wypisz "Category: <name>"
// Jeśli wewnętrzna mapa jest pusta, wypisz " (No products)"
// W przeciwnym razie przejdź przez każdy produkt i wypisz " Product: <name>, Price: <price>"
// Wpisz tutaj swój kod
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Przekształć ciąg JSON w zagnieżdżony HashMap
Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);
printNestedInventory(inventory);
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DDodawanie i odejmowanie macierzyTablice postrzępioneTablice 3D i większeTypowe wzorce dla tablic 2DPodsumowanie — wszystko o tablicach2HashMap część 1
Czym jest HashMap?Deklarowanie HashMapDostęp do wartościSprawdzanie, czy klucz istniejeModyfikowanie słownikówPodsumowanie — HashMap3HashMap — część 2
Metody HashMapIterowanie za pomocą keySet()Iterowanie za pomocą entrySet()Zagnieżdżona HashMapPowtórka — zarządzanie magazynemPowtórka — operacje na HashMap6Zaawansowany przepływ sterowania
Instrukcje etykietująceWyrażenie switchDopasowywanie wzorcówKlauzule ochronnePowtórzenie — przepływ sterowania9Projekt — licznik unikalnych słów
Wprowadzanie i przechowywanie tekstuPrzetwarzanie słówPoćwicz samodzielnie: Kompilator Java online