MapUtil.java
import java.util.*;
public class MapUtil {
public static void printCategoryMap() {
// Mapを作æˆã€‚ã‚ーãŒã‚«ãƒ†ã‚´ãƒªï¼ˆString)ã€å€¤ãŒå•†å“åリスト(List<String>)
Map<String, List<String>> categoryMap = new HashMap<>();
// 商å“ã‚’è¿½åŠ ã™ã‚‹ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£å‡¦ç†
// カテゴリãŒMapã«å˜åœ¨ã—ãªã‘ã‚Œã°æ–°ã—ãListを作る
// ã™ã§ã«å˜åœ¨ã™ã‚Œã°ã€ãã®Listã«è¿½åŠ ã™ã‚‹
addProduct(categoryMap, "Food", "Apple");
addProduct(categoryMap, "Food", "Banana");
addProduct(categoryMap, "Clothing", "T-shirt");
addProduct(categoryMap, "Clothing", "Jeans");
addProduct(categoryMap, "Food", "Orange"); // æ—¢å˜ã®Foodカテゴリã«è¿½åŠ
// 出力:カテゴリã”ã¨ã«å•†å“一覧を表示
for (String category : categoryMap.keySet()) {
System.out.println(category + ":");
for (String product : categoryMap.get(category)) {
System.out.println(" - " + product);
}
}
}
// 商å“をカテゴリã«è¿½åŠ ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆMapã®å€¤ãŒListãªã®ã§å·¥å¤«ãŒå¿…è¦ï¼‰
private static void addProduct(Map<String, List<String>> map, String category, String product) {
// ã™ã§ã«ãã®ã‚«ãƒ†ã‚´ãƒªãŒã‚ã‚‹ã‹ãƒã‚§ãƒƒã‚¯
if (!map.containsKey(category)) {
// ãªã‘ã‚Œã°æ–°ã—ã„リストを作æˆã—ã€Mapã«putã™ã‚‹
map.put(category, new ArrayList<>());
}
// カテゴリã«å¯¾å¿œã™ã‚‹ãƒªã‚¹ãƒˆã«å•†å“を追åŠ
map.get(category).add(product);
}
}
解説:Mapã«è¤‡æ•°ã®å€¤ã‚’æ ¼ç´ã—ãŸã„ã¨ã㯠List を使ãˆ
ãªãœ Map<String, List<String>> ãŒå¿…è¦ãªã®ã‹ï¼Ÿ
Javaã®Mapã¯ã€Œ1ã¤ã®ã‚ーã«1ã¤ã®å€¤ã€ãŒåŽŸå‰‡ã§ã™ã€‚
ã—ã‹ã—「カテゴリ → 複数ã®å•†å“ã€ã®ã‚ˆã†ã«ã€1対多ã®é–¢ä¿‚を扱ã„ãŸã„å ´é¢ã§ã¯ã€
値ã¨ã—ã¦Listã‚„Setãªã©ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’使ã†ã®ãŒä¸€èˆ¬çš„ã§ã™ã€‚
実装ã®ãƒã‚¤ãƒ³ãƒˆï¼šã‚ーã®å˜åœ¨ç¢ºèªã¨Listã®åˆæœŸåŒ–
æ–°ã—ã„商å“ã‚’è¿½åŠ ã™ã‚‹ãŸã³ã«ã€ä»¥ä¸‹ã®æ‰‹é †ãŒå¿…è¦ã«ãªã‚Šã¾ã™ï¼š
- ãã®ã‚«ãƒ†ã‚´ãƒªï¼ˆã‚ー)ãŒMapã«å˜åœ¨ã™ã‚‹ã‹ç¢ºèª
- å˜åœ¨ã—ãªã‘れã°ã€
new ArrayList<>();ã§åˆæœŸåŒ–ã—ã¦put() - ãã®ãƒªã‚¹ãƒˆã«
.add()ã§å•†å“を追åŠ
if (!map.containsKey(category)) {
map.put(category, new ArrayList<>());
}
map.get(category).add(product);
ã“ã®å‡¦ç†ã¯ã‚ˆãã‚ã‚‹ãŸã‚ã€ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ¡ã‚½ãƒƒãƒ‰ã«ã¾ã¨ã‚ã¦å†åˆ©ç”¨ã™ã‚‹ã®ãŒãƒ™ã‚¹ãƒˆã§ã™ã€‚
出力ã®å·¥å¤«
カテゴリ → 商å“リストを表示ã™ã‚‹ã«ã¯ã€æ¬¡ã®ã‚ˆã†ãªäºŒé‡ãƒ«ãƒ¼ãƒ—ã«ãªã‚Šã¾ã™ï¼š
for (String category : map.keySet()) {
System.out.println(category + ":");
for (String product : map.get(category)) {
System.out.println(" - " + product);
}
}
å®Ÿè¡Œçµæžœã®ä¾‹ï¼ˆé †ä¸åŒï¼‰ï¼š
Food:
- Apple
- Banana
- Orange
Clothing:
- T-shirt
- Jeans
ã¾ã¨ã‚:ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§å¦ã¶ã¹ãã“ã¨
Map<String, List<String>>ã¨ã„ã†æ§‹é€- 1ã¤ã®ã‚ーã«è¤‡æ•°ã®å€¤ã‚’関連付ã‘ã‚‹è¨è¨ˆæ–¹æ³•
containsKey()ã§ã®å˜åœ¨ãƒã‚§ãƒƒã‚¯ã¨åˆæœŸåŒ–- 二é‡ãƒ«ãƒ¼ãƒ—ã«ã‚ˆã‚‹å‡ºåЛ処ç†
ã“ã®ã‚¹ãƒ†ãƒƒãƒ—を乗り越ãˆã‚Œã°ã€Mapを使ã£ãŸæŸ”軟ãªãƒ‡ãƒ¼ã‚¿æ§‹é€ ã®åŸºç¤ŽãŒèº«ã«ã¤ãã¾ã™ã€‚
102 ステップアップå•題 「Map修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€ŒMap修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™



コメント