MapUtil.java
import java.util.*;
public class MapUtil {
public static void printStoreInventory() {
// 店舗別ã®å•†å“在庫を記録ã™ã‚‹Map(ãƒã‚¹ãƒˆã•れãŸMapæ§‹é€ ï¼‰
// 外å´ã®Map: 店舗å → 内å´ã®Map
// 内å´ã®Map: 商å“å → 在庫数
Map<String, Map<String, Integer>> storeInventory = new HashMap<>();
// --- データ登録(Tokyo店) ---
addStock(storeInventory, "Tokyo", "Apple", 10);
addStock(storeInventory, "Tokyo", "Banana", 5);
// --- データ登録(Osaka店) ---
addStock(storeInventory, "Osaka", "Apple", 7);
addStock(storeInventory, "Osaka", "Orange", 3);
// --- 出力 ---
for (String store : storeInventory.keySet()) {
System.out.println(store + ":");
Map<String, Integer> products = storeInventory.get(store);
for (String product : products.keySet()) {
int stock = products.get(product);
System.out.println(" " + product + " → " + stock);
}
}
}
// ヘルパーメソッド:商å“åœ¨åº«ã‚’è¿½åŠ ã™ã‚‹
private static void addStock(Map<String, Map<String, Integer>> inventory,
String store, String product, int stock) {
// 店舗ãŒå˜åœ¨ã—ãªã‘ã‚Œã°æ–°ã—ãMapを作æˆ
if (!inventory.containsKey(store)) {
inventory.put(store, new HashMap<>());
}
// 店舗ã«å¯¾å¿œã™ã‚‹å•†å“Mapã‚’å–å¾—ã—ã€å•†å“ã¨åœ¨åº«ã‚’登録
inventory.get(store).put(product, stock);
}
}
解説:Mapã®ä¸ã«Map?ãƒã‚¹ãƒˆæ§‹é€ ã®ä½¿ã„æ–¹
ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§ã¯ã€ã€ŒMapã®ä¸ã«MapãŒå…¥ã‚‹ã€ã¨ã„ã†ã‚„ã‚„è¤‡é›‘ãªæ§‹é€ を扱ã„ã¾ã™ã€‚
ç¾å®Ÿã®ãƒ‡ãƒ¼ã‚¿æ§‹é€ ã§ã¯éžå¸¸ã«ã‚ˆã使ã‚れる形ã§ã™ã€‚
æ§‹é€ ã®æ„味
Map<String, Map<String, Integer>> storeInventory;
- 外å´ã®Map:ã‚ーã¯ã€Œåº—舗åã€ã€å€¤ã¯ã€Œå•†å“→在庫数ã€ã‚’管ç†ã™ã‚‹Map
- 内å´ã®Map:ã‚ーã¯ã€Œå•†å“åã€ã€å€¤ã¯ã€Œåœ¨åº«æ•°ã€
データã®ç™»éŒ²æ–¹æ³•
if (!inventory.containsKey(store)) {
inventory.put(store, new HashMap<>());
}
inventory.get(store).put(product, stock);
- 店舗ãŒåˆã‚ã¦ç™»å ´ã—ãŸå ´åˆã€å†…å´ã®Map(商å“一覧)を新è¦ä½œæˆ
- ã™ã§ã«ã‚る店舗ã«ã¯ã€å•†å“ã¨åœ¨åº«ã‚’è¿½åŠ ç™»éŒ²
出力方法(2é‡ãƒ«ãƒ¼ãƒ—)
for (String store : storeInventory.keySet()) {
System.out.println(store + ":");
for (String product : storeInventory.get(store).keySet()) {
System.out.println(" " + product + " → " + 在庫数);
}
}
- 外å´ã®Map(店舗)を回ã—ãªãŒã‚‰
- 内å´ã®Map(商å“)をã•らã«å›žã—ã¦å‡ºåŠ›
å®Ÿè¡Œçµæžœã®ä¾‹ï¼ˆé †ä¸åŒï¼‰
Tokyo:
Apple → 10
Banana → 5
Osaka:
Apple → 7
Orange → 3
ã¾ã¨ã‚:ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§å¦ã¶ã¹ãã“ã¨
- ãƒã‚¹ãƒˆã•れãŸMapã®æ§‹é€ を作る方法(Map<String, Map<…>>)
- åˆæœŸåŒ–ã®å¿…è¦æ€§ã¨ã€ãƒ«ãƒ¼ãƒ—æ§‹é€ ã®æ£ã—ã„çµ„ã¿æ–¹
- ç¾å®Ÿçš„ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã‚’Javaã§æ‰±ã†åŠ›ã‚’é¤Šã†
ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã‚’ç†è§£ã™ã‚Œã°ã€è¤‡é›‘ãªéšŽå±¤æ§‹é€ ã®ãƒ‡ãƒ¼ã‚¿ã‚’Javaã§è‡ªåœ¨ã«æ‰±ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
102 ステップアップå•題 「Map修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€ŒMap修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼
// tesh:
// 何ã‹ãƒ¢ãƒ¤ã£ã¨ã—ã¦ã‚‹ï¼Ÿ ãªã‚‰ç”ãˆã¯ã“ã“ã«ã‚る。
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™



コメント