Map의 가장 큰 특징이 key는 null이 아니다
저도 같은 내용이 궁금하여 HashMap 코드를 확인해 보았습니다.우리가 hashMap.put(key, value) 을 통해 put() 메서드를 호출합니다.// HashMap 의 put() 메서드 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }put() 메서드를 보면 hash() 메소드에 key 를 전달하여 나온 값을 putVal() 메소드 호출 시에 사용합니다.이 값은 hash 로 putVal() 메서드에서 Node 를 생성하는데 사용되고, hashMap 에서 고유키 역할을 합니다.즉, 우리는 key 를 전달하였지만 HashMap 에서는 이 key 를 hash 로 바꾸어 고유키로 사용하는 것입니다.다음으로 hash() 메소드를 보았습니다.// hash() 메서드 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }key 를 받아서 처리하여 int 타입의 hash 를 리턴하고 있습니다.key 가 null 인 경우는 0 을 반환합니다.따라서 우리가 key 로 null 을 전달하면 haspMap 은 실제 사용할 고유키(= hash) 로 0 를 사용하게 됩니다.0 이 고유키로 사용되지 못할 이유는 없습니다.이것이 HashMap 에서 key 로 null 이 사용가능한 이유로 보입니다.