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 ์ด ์ฌ์ฉ๊ฐ๋ฅํ ์ด์ ๋ก ๋ณด์
๋๋ค.