MapUtil.java
import java.util.*;
public class MapUtil {
public static void countOrders() {
// 注文ã•れãŸå•†å“リスト(é‡è¤‡ã‚り)
List<String> orders = Arrays.asList(
"apple", "banana", "apple", "orange", "banana", "apple"
);
// 商å“ã”ã¨ã®ã‚«ã‚¦ãƒ³ãƒˆã‚’ä¿æŒã™ã‚‹Mapを作æˆ
Map<String, Integer> countMap = new HashMap<>();
// 注文リストを1ä»¶ãšã¤å‡¦ç†
for (String item : orders) {
// ã™ã§ã«ãã®å•†å“ãŒMapã«ã‚れã°ã€å€¤ã‚’1増やã™
if (countMap.containsKey(item)) {
int currentCount = countMap.get(item); // ç¾åœ¨ã®ã‚«ã‚¦ãƒ³ãƒˆã‚’å–å¾—
countMap.put(item, currentCount + 1); // 1増やã—ã¦å†ç™»éŒ²
} else {
// åˆã‚ã¦å‡ºç¾ã—ãŸå•†å“ → 1を登録
countMap.put(item, 1);
}
}
// çµæžœã‚’出力(出ç¾å›žæ•°ã‚’表示)
for (Map.Entry<String, Integer> entry : countMap.entrySet()) {
System.out.println(entry.getKey() + " → " + entry.getValue());
}
}
}
解説:Mapを使ã£ã¦ã€Œæ•°ãˆã‚‹ã€
ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§ã¯ã€Mapを使ã£ãŸå‡ºç¾å›žæ•°ã®é›†è¨ˆã¨ã„ã†å®šç•ªãƒ‘ターンをå¦ã³ã¾ã™ã€‚
処ç†ã®æµã‚Œ
- é‡è¤‡ã‚’å«ã‚€ãƒªã‚¹ãƒˆï¼ˆ
List<String>)を用æ„ã™ã‚‹ Map<String, Integer>を使ã£ã¦ã‚«ã‚¦ãƒ³ãƒˆã‚’ä¿æŒã™ã‚‹forループã§1ä»¶ãšã¤å‡¦ç†ã—ã€
- ã™ã§ã«ç™»éŒ²ã•れã¦ã„ã‚‹å ´åˆï¼šå€¤ã‚’ +1
- ã¯ã˜ã‚ã¦ã®ã‚ー:値を 1 ã§åˆæœŸåŒ–
- 最終的ã«ã€å•†å“ã”ã¨ã®å‡ºç¾å›žæ•°ã‚’表示ã™ã‚‹
containsKey() を使ã†ç†ç”±
カウント処ç†ã§ã¯ã€ã¾ãšãã®ã‚ーãŒã™ã§ã«Mapã«ã‚ã‚‹ã‹ã‚’確èªã—ãªã„ã¨ã„ã‘ã¾ã›ã‚“。
ãªã„å ´åˆã¯ null ã‚’è¿”ã™ã®ã§ã€ã„ããªã‚Š get() ã—㦠+1 ã—よã†ã¨ã™ã‚‹ã¨ NullPointerException ãŒå‡ºã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
getOrDefault() を使ã£ãŸåˆ¥è§£ï¼ˆå‚考)
int count = countMap.getOrDefault(item, 0);
countMap.put(item, count + 1);
getOrDefault(key, defaultValue)ã¯ã€ã‚ーãŒå˜åœ¨ã—ãªã„å ´åˆã«defaultValueã‚’è¿”ã—ã¦ãれる便利メソッドã§ã™ã€‚- Java8以é™ã§åˆ©ç”¨å¯èƒ½ï¼ˆåˆå¦è€…ã«ã¯æœ€åˆã¯æ˜Žç¤ºçš„ãª
containsKey()ã®æ–¹ãŒã‚ã‹ã‚Šã‚„ã™ã„)
å®Ÿè¡Œçµæžœã®ä¾‹ï¼ˆé †ä¸åŒï¼‰ï¼š
apple → 3
banana → 2
orange → 1
ã¾ã¨ã‚:ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§å¦ã¶ã¹ãã“ã¨
- 値ã®åž‹ãŒ
Integerã«ãªã£ã¦ã‚‚ã€Mapã®åŸºæœ¬æ“作ã¯åŒã˜ - 集計処ç†ã®å®šçŸ³ï¼šã€Œå˜åœ¨ç¢ºèª → åŠ ç®— or åˆæœŸåŒ–ã€
- 出ç¾å›žæ•°ã‚«ã‚¦ãƒ³ãƒˆã¯å®Ÿå‹™ã§ã‚‚よã使ã‚れるé‡è¦ãƒ‘ターン
ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã‚’ãã£ã¡ã‚Šç†è§£ã§ãれã°ã€Mapã§ã®æƒ…å ±é›†ç´„å‡¦ç†ãŒã‚°ãƒƒã¨æ¥½ã«ãªã‚Šã¾ã™ã€‚
102 ステップアップå•題 「Map修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€ŒMap修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼
// tesh:
// 「ã¾ãå‹•ã„ãŸã—ã„ã„ã‹ã€ã£ã¦é€ƒã’ã‚‹å‰ã«ã€‚ã“れèªã‚“ã§ã€‚
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™



コメント