Menu
Coddy logo textTech

İç İçe HashMap

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

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

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

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

İçi boş bir HashMap ile "Electronics" kategorisini ekleyin

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

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

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

Dış haritanın 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ış haritanın, "Laptop" anahtarını ve 1200 değerini içeren bir iç HashMap'e eşlenen bir anahtarı ("Electronics") vardır.

challenge icon

Görev

Kolay

<b>printNestedInventory</b> adlı, girdi olarak inventory adlı iç içe bir HashMap alan bir yöntem oluşturun. Bu envanterde:

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

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

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

Ö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ınızdaki kategori ve ürünlerin sırası yukarıdaki örnekten farklı olabilir. Bu beklenen bir durumdur.

Not: Sağlanan diğer içe aktarmalara ek olarak java.util.Map içe aktarmanız gerekecektir.

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'teki her kategori üzerinde yinele
        // Her kategori için "Category: <name>" yazdır
        // İç map boşsa, "  (No products)" yazdır
        // Aksi takdirde, her ürün üzerinde yinele ve "  Product: <name>, Price: <price>" yazdır
        // Kodunuzu buraya yazın
    }

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

        // JSON dizesini Nested 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