MapUtil.java
import java.util.*;
public class MapUtil {
public static void testNullBehavior() {
// 会員IDã¨æ°åを管ç†ã™ã‚‹Mapを作æˆï¼ˆHashMapã¯nullã‚ー・null値を許容)
Map<Integer, String> memberMap = new HashMap<>();
// 通常ã®ãƒ‡ãƒ¼ã‚¿ã‚’登録
memberMap.put(1001, "Yamada");
// nullã‚’ã‚ーã¨ã—ã¦ç™»éŒ²ï¼ˆæœ‰åŠ¹ï¼‰
memberMap.put(null, "Tanaka");
// nullを値ã¨ã—ã¦ç™»éŒ²ï¼ˆæœ‰åŠ¹ï¼‰
memberMap.put(1002, null);
// Mapã®å†…容を出力
for (Map.Entry<Integer, String> entry : memberMap.entrySet()) {
Integer id = entry.getKey();
String name = entry.getValue();
System.out.println(id + " → " + name);
}
// nullã‚ーã§å–å¾—ã§ãã‚‹ã‹ç¢ºèª
System.out.println("nullã‚ーã®å€¤: " + memberMap.get(null));
// 値ãŒnullã®ã¨ãã®å–得確èª
System.out.println("ID 1002 ã®å€¤: " + memberMap.get(1002));
}
}解説:HashMapã¨nullã®é–¢ä¿‚
Javaã®HashMapã¯ã€ä»–ã®Mapå®Ÿè£…ã¨æ¯”ã¹ã¦æŸ”軟ã§ã€nullã‚’ã‚ーや値ã«è¨±å®¹ã—ã¾ã™ã€‚
nullã‚ーã«ã¤ã„ã¦
map.put(null, "Tanaka");HashMap㯠nullã‚ーを1ã¤ã 㑠登録ã§ãã¾ã™- ã™ã§ã«nullã‚ーãŒã‚る状態ã§å†åº¦
put(null, ...)ã™ã‚‹ã¨ã€ä¸Šæ›¸ãã•れã¾ã™ TreeMapãªã©ã§ã¯ nullã‚ーã¯NullPointerExceptionã®åŽŸå› ã«ãªã‚‹ã®ã§æ³¨æ„
null値ã«ã¤ã„ã¦
map.put(1002, null);null㯠値ã¨ã—ã¦ä½•個ã§ã‚‚登録å¯èƒ½- ãŸã ã—ã€
null値ã¨ã€Œæœªç™»éŒ²ã€ã‚’区別ã™ã‚‹ã«ã¯containsKey()ã§ã®å˜åœ¨ç¢ºèªãŒå¿…è¦
map.containsKey(1002); // true(nullãŒç™»éŒ²ã•れã¦ã„る)
map.get(1002); // null(値ãŒnull)
map.containsKey(9999); // falseï¼ˆæœªç™»éŒ²ï¼‰å‡ºåŠ›çµæžœã®ä¾‹ï¼ˆé †ä¸åŒï¼‰
1001 → Yamada
null → Tanaka
1002 → null
nullã‚ーã®å€¤: Tanaka
ID 1002 ã®å€¤: nullã¾ã¨ã‚:ã“ã®ã‚¹ãƒ†ãƒƒãƒ—ã§å¦ã¶ã¹ãã“ã¨
HashMapã¯nullã‚ーを1ã¤ã€null値を複数許å¯ã™ã‚‹- 値ãŒnullãªã®ã‹ã€æœªç™»éŒ²ãªã®ã‹ã¯
containsKey()ã§åˆ¤åˆ¥ã™ã‚‹ - nullã«é–¢ã™ã‚‹ä»•様㯠Map実装ã”ã¨ã«é•ㆠã®ã§è¦æ³¨æ„
Mapã®æŸ”軟ã•ã¨è½ã¨ã—ç©´ã®ä¸¡æ–¹ã‚’体験ã™ã‚‹é‡è¦ãªã‚¹ãƒ†ãƒƒãƒ—ã§ã™ã€‚
102 ステップアップå•題 「Map修羅é“ã€
Just Keep Typing, Baby!ã§ã¯ã€ã“ã®ã€ŒMap修羅é“ã€ã§ã¤ã¾ã¥ã„ãŸäººå‘ã‘ã®è§£èª¬ã‚’ã—ã¦ã„ã¾ã™ã€‚ã“ã¡ã‚‰ã‚‚ãœã²ï¼

// tesh:
// 「æ„味ã¯ã‚ã‹ã‚‰ã‚“ã‘ã©é€šã£ãŸã€ã¯ä¸€ç•ªã‚ケン。確èªã—ã¨ã‘。


コメント