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: 1Dalam contoh ini, map bagian luar memiliki satu kunci ("Electronics") yang dipetakan ke HashMap bagian dalam yang berisi kunci "Laptop" dan nilainya 1200.
Tantangan
MudahBuat 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);
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Array Multidimensi
Dasar Array 2DMengakses Elemen Array 2DLoop Bersarang dengan Array 2DRangkuman: Array 2DPenjumlahan dan Pengurangan MatriksArray BergerigiArray 3D dan Lebih JauhPola Umum Array 2DRangkuman: Semua tentang Array2HashMap Bagian 1
Apa itu HashMap?Deklarasikan HashMapMengakses nilaiPeriksa apakah key adaMengubah dictionaryRingkasan: HashMap3HashMap Bagian 2
Method HashMapIterasi dengan keySet()Iterasi dengan entrySet()HashMap BersarangRangkuman: Kelola GudangRangkuman: Operasi HashMap6Alur Kontrol Lanjutan
Pernyataan LabelEkspresi SwitchPencocokan PolaKlausa PenjagaRingkasan Alur Kontrol9Proyek: Penghitung Kata Unik
Input dan Penyimpanan TeksPemrosesan KataLatihan sendiri: Compiler Java online