Menu
CoddyTech

İç İçe HashMap

Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 19 / 59.

İç içe geçmiş bir HashMap, değerleri de HashMap olan bir HashMap'tir. Bu, karmaşık verileri hiyerarşik olarak düzenlemeni sağlar. Örneğin, kategorileri ("Elektronik" veya "Mobilya" gibi) ürünleri ve fiyatlarını içeren iç HashMap'lerle eşleştiren bir dış HashMap'in olabilir.

İç içe bir HashMap oluşturun: kategoriler -> (öğeler -> fiyatlar)

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

İçinde boş bir HashMap bulunan "Electronics" kategorisini ekleyin

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

1200 fiyatıyla "Laptop" öğesini "Electronics" içine ekleyin

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

Dış eşlemenin boş olup olmadığını kontrol edin ve boyutunu yazdırın

System.out.println(inventory.isEmpty());
// Çıktı: false
System.out.println(inventory.size()); 
// Çıktı: 1

Bu örnekte, dış haritada, "Laptop" anahtarını ve 1200 değerini içeren bir iç HashMap'e eşlenen bir anahtar ("Electronics") bulunur.

challenge icon

Görev

Kolay

Girdi olarak inventory adlı iç içe bir HashMap alan printNestedInventory adlı bir yöntem oluştur. Bu envanterde:

  • Anahtarlar kategorilerdir (ör. "Electronics", "Furniture").
  • Değerler, anahtarları ürün adları ve değerleri fiyatları olan iç HashMap'lerdir.

Yöntemin envanteri aşağıdaki biçimde yazdırmalıdır:

  • Her kategori için Category: <name> yazdır
  • Kategoride ürün varsa, her birini Product: <name>, Price: <price> biçiminde yazdır (2 boşluk girintili)
  • Kategoride ürün yoksa, (No products) yazdır (2 boşluk girintili)

Örnek çıktı:

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

Not: HashMap yineleme sırasını garanti etmez; bu nedenle çıktındaki kategori ve ürünlerin sırası yukarıdaki örnekten farklı olabilir. Bu beklenen bir durumdur.

Not: Sağlanan diğer import'lara ek olarak java.util.Map import etmen gerekir.

Kendin dene

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) {
        // Dış HashMap içindeki her kategoriyi dolaş
        // Her kategori için "Category: <name>" yazdır
        // İç map boşsa "  (No products)" yazdır
        // Aksi halde her ürünü dolaş ve "  Product: <name>, Price: <price>" yazdır
        // Kodunu buraya yaz
    }

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

        // JSON dizesini iç içe geçmiş HashMap'e dönüştür
        Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
        HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);

        printNestedInventory(inventory);
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Java derleyicisi