"๋ง์ง๋ง์ผ๋ก ์ง๋์ ๋ํด ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค."
"์์๋ค์ํผ ์ง๋๋ ํค-๊ฐ ์ ์ธํธ๋ฅผ ์ ์ฅํฉ๋๋ค. ํค๋ ๊ณ ์ ํด์ผ ํ์ง๋ง ๊ฐ์ ๋ฌด์์ด๋ ๋ ์ ์์ต๋๋ค. ํค-๊ฐ ์์ ์ง๋์ ์ถ๊ฐํ๊ณ ์ปฌ๋ ์ ์ ์ด๋ฏธ ํค๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ด์ ๊ฐ์ ์ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. ์ฆ , ํค๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ ํน์ ์ธ๋ฑ์ค์ฒ๋ผ ์๋ํฉ๋๋ค ."
๋งต์ (x, y) ์์ ์งํฉ์ ๋ํ๋ด๋ ์ํ ์ฉ์ด์ด๋ฉฐ ๊ฐ ๊ณ ์ x๋ ์ผ๋ถ y์ ํด๋นํฉ๋๋ค.
ํ๋ก๊ทธ๋๋จธ๋ Map์ ๋งค์ฐ ์ข์ํ๋ฏ๋ก ์ฌ๊ธฐ์๋ Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ 4๊ฐ์ง ์ปฌ๋ ์ ์ ์ ์ํฉ๋๋ค.
"๊ฐ๋จํ ์์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค."
"๋ ธ๋์์ Entry ๊ฐ Map ์ธํฐํ์ด์ค ์ ์ค์ฒฉ๋ ์ธํฐํ์ด์ค์์ ๋ํ๋ ๋๋ค ."
"์์ ์์ ๋จ์ผ ์ํฐํฐ๋ก ์ค๋ช ํ๊ธฐ ์ํด ํญ๋ชฉ์ด ์ถ๊ฐ๋์์ต๋๋ค."
"Map<K,V>์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค."
ํ๋ ์์ | ์ค๋ช |
---|---|
int size() |
๋งต์ ์ ์๋ฅผ ๋ฐํํฉ๋๋ค. |
boolean isEmpty() |
๋งต์ด ๋น์ด ์๋์ง ํ์ธํฉ๋๋ค. |
boolean containsKey(Object key) |
๋งต์ ์ง์ ๋ ํค๊ฐ ํฌํจ๋์ด ์์ต๋๊น? |
boolean containsValue(Object value) |
๋งต์ ์ง์ ๋ ๊ฐ์ด ํฌํจ๋์ด ์์ต๋๊น? |
V get(Object key) |
์ง์ ๋ ํค์ ๊ฐ์ ๋ฐํํฉ๋๋ค. |
V put(K key, V value) |
ํค์ ์ ๊ฐ์ ์ค์ ํฉ๋๋ค. ๋ฉ์๋๋ ์ด์ ๊ฐ ๋๋ null์ ๋ฐํํฉ๋๋ค. |
putAll(Map<? extends K, ? extends V> m) |
๋ค๋ฅธ ๋งต์์ ์์ ์ถ๊ฐํฉ๋๋ค. |
void clear() |
๋งต์ ์ง์๋๋ค. ์ฆ, ๋ชจ๋ ์์ ์ ๊ฑฐํฉ๋๋ค. |
Set<K>keySet() |
ํค ์งํฉ์ ๋ฐํํฉ๋๋ค. |
Collection<V>values() |
๊ฐ ๋ชจ์์ ๋ฐํํฉ๋๋ค. |
Set<Map.Entry<K, V>>entrySet() |
์์ ์งํฉ์ ๋ฐํํฉ๋๋ค. |
"K์ V๋ ํค์ ๊ฐ์ ์ ํ ๋งค๊ฐ๋ณ์์ ๋๋ค."
"๊ธ์, ๋๋ ๋๋ถ๋ถ์ ๋ฐฉ๋ฒ์ ์ต์ํ์ง๋ง ๊ทธ ์ค ์ผ๋ถ๋ง ์ฌ์ฉํ์ต๋๋ค."
"์ํธ๋ฆฌ ํด๋์ค์ ๋ํด ๋ฌด์์ ๋ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?"
"์ด ํด๋์ค๋ ํ ์์ ์์๋ฅผ ์ค๋ช ํฉ๋๋ค. ๋ช ๊ฐ์ง ๋ฉ์๋๊ฐ ์์ต๋๋ค."
ํ๋ ์์ | ์ค๋ช |
---|---|
K getKey() |
ํค-๊ฐ ์์ ํค๋ฅผ ๋ฐํํฉ๋๋ค. |
V getValue() |
ํค-๊ฐ ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค. |
V setValue(V value) |
ํค-๊ฐ ์์ ์ ๊ฐ์ ์ค์ ํฉ๋๋ค. |
"๋งต ์ ์ฒด๋ฅผ ๊ฑฐ์น์ง ์๊ณ ํ ์์ ๋ฉ์๋์ ์ ๋ฌํ ์ ์์ด ์ง์ ์ด ํธ๋ฆฌํฉ๋๋ค."
"์๊ฒ ์ด์."
"์ด์ ์ง๋ ๊ตฌํ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค."
"์ฒซ ๋ฒ์งธ๋ HashMap ์ ๋๋ค . ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ ์ฅํฉ๋๋ค. ํค์ ๊ฐ์ null๋ฟ๋ง ์๋๋ผ ๋ชจ๋ ์ ํ์ผ ์ ์์ต๋๋ค. ์์์ ์์๋ ์ปฌ๋ ์ ์ด ๋ณ๊ฒฝ๋ ๋ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค ."
"์์๋ HashMap์ ๊ทธ๋ฃน ๋๋ ๋ฒํท ์ธํธ๋ก ์ ์ฅ๋ฉ๋๋ค. ์์์ hashCode() ๋ฉ์๋๋ ์์๊ฐ ์ํ๋ ๋ฒํท์ ๊ฒฐ์ ํฉ๋๋ค."
"๋งค์ฐ ๋๋ต์ ์ผ๋ก ๋งํ๋ฉด 1์์ 100๊น์ง์ ํด์ ์ฝ๋๋ฅผ ๊ฐ์ง ์์๋ ์ฒซ ๋ฒ์งธ ๋ฒํท์ ์ํ๊ณ 101์์ 200๊น์ง์ ๊ฐ์ ๊ฐ์ง ์์๋ ๋ ๋ฒ์งธ ๋ฒํท์ ์ํฉ๋๋ค."
"์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์์๋ฅผ ์ ์ฅํ๋ ํฌ์ธํธ๋ ์์๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์ ๊ฑฐํ ๋ ๊ด๋ จ ์๋ ๋ฒํท์ ๋ชจ๋ ์์๋ฅผ โโ์ ๊ฑฐํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค."
"์๊ฒ ์ด์."
"HashMap์ ๋ํ ์ ๋ง ์ข์ ๊ธฐ์ฌ๊ฐ ์์ต๋๋ค. ์ฝ์ด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค: https://medium.com/@mr.anmolsehgal/java-hashmap-internal-implementation-21597e1efec3 "
"๋ ๋ฒ์งธ ์ปฌ๋ ์ ์ LinkedHashMap ์ ๋๋ค. HashMap๊ณผ์ ์ฃผ์ ์ฐจ์ด์ ์ ํญ๋ชฉ์ ์ฐ๊ฒฐ๋ ๋ชฉ๋ก์ผ๋ก ์ ์ฅํ๋ค๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ HashMap์์๋ ์์์ ์์๊ฐ ์ ์๋์ง ์์ผ๋ฉฐ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ LinkedHashMap์์ ๋ฐ๋ณต์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. LinkedHashMap์ ์ถ๊ฐ๋ ์์๋๋ก ๋ชจ๋ ์์๋ฅผ โโํ์ํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. ๋ํ LinkedHashMap์๋ ๋ง์ง๋ง ์ฌ์ฉ/ํ๋ ์์๋๋ก ๋ชจ๋ ์์ ํ์ํ ์ ์๋ ๋ฐ๋ณต์๊ฐ ์์ต๋๋ค."
"LinkedHashMap์ ๋ํ ์ ๋ง ์ข์ ๊ธฐ์ฌ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ ์์ต๋๋ค: https://medium.com/@mr.anmolsehgal/java-linkedhashmap-internal-implementation-44e2e2893036 "
"์ค๋ ์ด์ผ๊ธฐํ๊ณ ์ถ์ ์ธ ๋ฒ์งธ ์ปฌ๋ ์ ์ TreeMap ์ ๋๋ค ."
" TreeMap์ ์์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์ํ๋ก ์ ์งํฉ๋๋ค. ์ด๋ TreeMap์ด ๊ท ํ ์กํ ๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํฉ๋๋ค."
"๊ฒฐ๊ณผ์ ์ผ๋ก ์ฝ์ ์๊ฐ๊ณผ ๊ฒ์ ์๊ฐ์ด ๋งค์ฐ ์งง์ต๋๋ค. ์ด ํด๋์ค๋ ๋งค์ฐ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ๋ ํ์ํ ์ ํ์ ๋๋ค."
"๋ฌผ๋ก TreeMap์ ๋ํ ๊ธฐ์ฌ๋ ์์ต๋๋ค. https://medium.com/xebia-engineering/treemap-internals-199e0e0050b5 "
"๋ด๊ฐ ์์ง ๋งํ์ง ์์ ๊ฒ์ ๋ฌด์์ ๋๊น?"
"WeakHashMap์ด์ง๋ง Rishi๋ ๋ฉฐ์น ์ ์ ๊ทธ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค."
"์ธ์ ์์ด?"
"๊ทธ๊ฐ SoftReference, WeakReference ๋ฐ PhantomReference์ ๋ํด ์ด์ผ๊ธฐํ์ ๋."
"๋น์ ์ด ์ด๋ฆ์ ๋ชจ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์๋ค๋ ๊ฒ์ ๊ณ ๋ คํ๋ฉด ๋น์ ์ ๋ฏฟ์ต๋๋ค. ๊ทธ๋ผ ํธ์ํ ์ฌ์ญ์์ค. ์ค๋ ๋ฐค์ ๋ต๊ฒ ์ต๋๋ค."
"์๋ , ์๋ฆฌ."
GO TO FULL VERSION