Menu
CoddyTech

HashMap Bersarang

Termasuk bagian Logika & Alur dalam perjalanan Java di Coddy. Pelajaran 19 dari 59.

HashMap bersarang adalah HashMap yang nilainya berupa HashMap juga. Ini memungkinkan kamu mengatur data kompleks secara hierarkis. Misalnya, kamu dapat memiliki HashMap luar yang memetakan kategori (seperti "Electronics" atau "Furniture") ke HashMap dalam yang menyimpan produk dan harganya.

Buat HashMap bertingkat: kategori -> (barang -> harga)

HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();

Tambahkan kategori "Electronics" dengan HashMap bagian dalam yang kosong

inventory.put("Electronics", new HashMap<>());

Tambahkan item "Laptop" dengan harga 1200 ke dalam "Electronics"

inventory.get("Electronics").put("Laptop", 1200);

Periksa apakah map terluar kosong dan cetak ukurannya

System.out.println(inventory.isEmpty());
// output: false
System.out.println(inventory.size()); 
// output: 1

Dalam contoh ini, map bagian luar memiliki satu kunci ("Electronics") yang dipetakan ke HashMap bagian dalam yang berisi kunci "Laptop" dan nilainya 1200.

challenge icon

Tantangan

Mudah

Buat method bernama printNestedInventory yang menerima HashMap bertingkat bernama inventory sebagai input. Dalam inventory ini:

  • Kunci adalah kategori (misalnya, "Electronics", "Furniture").
  • Nilai adalah HashMap bagian dalam, dengan kunci berupa nama produk dan nilai berupa harganya.

Method-mu harus mencetak inventory dalam format berikut:

  • Untuk setiap kategori, cetak Category: <name>
  • Jika kategori memiliki produk, cetak setiap produk dengan format Product: <name>, Price: <price> (dengan indentasi 2 spasi)
  • Jika kategori tidak memiliki produk, cetak (No products) (dengan indentasi 2 spasi)

Contoh output:

Category: Electronics
  Product: Laptop, Price: 1200
  Product: Smartphone, Price: 800
Category: Furniture
  Product: Chair, Price: 50
  Product: Table, Price: 150
Category: EmptyCategory
  (No products)

Catatan: HashMap tidak menjamin urutan iterasi, jadi urutan kategori dan produk dalam output-mu mungkin berbeda dari contoh di atas. Ini wajar.

Catatan: Kamu perlu mengimpor java.util.Map selain import lain yang telah disediakan.

Coba sendiri

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) {
        // Ulangi untuk setiap kategori dalam HashMap luar
        // Untuk setiap kategori, cetak "Category: <name>"
        // Jika map bagian dalam kosong, cetak "  (No products)"
        // Jika tidak, ulangi untuk setiap produk dan cetak "  Product: <name>, Price: <price>"
        // Tulis kodemu di sini
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inventoryString = scanner.nextLine();

        // Ubah string JSON menjadi HashMap bersarang
        Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
        HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);

        printNestedInventory(inventory);
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Java online