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 HashMap olan bir HashMap'tir. Bu, karmaşık verileri hiyerarşik olarak organize etmenizi sağlar. Örneğin, kategorileri ("Elektronik" veya "Mobilya" gibi) ürünlerini ve fiyatlarını tutan iç HashMap'lere eşleyen bir dış HashMap'iniz olabilir.

İç içe bir HashMap oluşturun: kategoriler -> (ürünler -> fiyatlar)

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

"Electronics" kategorisini boş bir iç HashMap ile 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());
// Output: false
System.out.println(inventory.size()); 
// Output: 1

Bu örnekte, dış map bir anahtara ("Electronics") sahiptir ki bu anahtar, "Laptop" anahtarını ve 1200 değerini içeren iç bir HashMap'e eşlenir.

challenge icon

Görev

Kolay

<b>printNestedInventory</b> adında bir metod oluşturun ki, inventory adlı iç içe geçmiş bir HashMap'i girdi olarak alsın. Bu envanterde:

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

Metodunuz envanteri aşağıdaki formatta yazdırmalıdır:

  • Her kategori için Category: <name> yazdırın
  • Eğer kategori ürünlere sahipse, her birini Product: <name>, Price: <price> olarak yazdırın (2 boşluk girintisi ile)
  • Eğer kategori ürünlere sahip değilse, (No products) yazdırın (2 boşluk girintisi 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 yüzden çıktınızdaki kategoriler 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 etmeniz gerekecek.

Kopya kağıdı

İç içe bir HashMap, değerleri kendileri HashMap olan bir HashMap'tir ve hiyerarşik veri organizasyonuna olanak tanır.

İç içe bir HashMap oluşturun:

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

Boş bir iç HashMap ile bir kategori ekleyin:

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

İç HashMap'e bir öğe ekleyin:

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

Dış haritanın boş olup olmadığını kontrol edin ve boyutunu alın:

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

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 kategoriyi yinele
        // Her kategori için "Category: <name>" yazdır
        // İç harita boşsa "  (No products)" yazdır
        // Aksi takdirde her ürünü 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 iç içe 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