๐ฅ ์ด ํฌ์คํ ์ ๋ ธ๋ง๋์ฝ๋, ์๋ฐ์์ ์๋์ ์์์ ๋ณด๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌํ์ต๋๋ค.
HashMap์ key-value ์์คํ ์ผ๋ก Map ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ํ์ ์ธ ์ปฌ๋ ์ ํด๋์ค๋ค.
๐ค HashMap๊ณผ List ๋น๊ต
List : O(N) - ์ผ์ผํ ์์ดํ ์ ํ์ํ๋ ๊ตฌ์กฐ(์์ดํ ์ด ๋ง์์ง์๋ก ์๊ฐ์ด ์ฆ๊ฐ)
HashMap : O(1) - ์ฐพ๋๋ฐ ๋จ 1 ์คํ ๋ง ๋ค์ด๊ฐ => ๋งค์ฐ ๋น ๋ฆ!
๐ค ํด์ฑ(Hashing)์ด๋?
hash function์ ํตํด data๋ฅผ ์ ์ฅํ๊ณ ์ฝ์ด์ค๋ ๋ฐฉ๋ฒ
key๊ฐ์ ๋ฃ์ผ๋ฉด index(์ ์ฅ์์น, Hash Code)๋ฅผ ์๋ ค์ค๋ค.
โญ๏ธ ํด์ฑ ์์ : ํค๋ก ํด์ํจ์ ํธ์ถ -> hash function์ ํตํด hash code์ป์ด์ด -> hash code์ ๋์ํ๋ ๋งํฌ๋๋ฆฌ์คํธ ๋ฐฐ์ด์์ ์ฐพ์ -> ํค์ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์. |
๐ค ์ฃผ์ ๋ฉ์๋
entrySet() : key - value์์ ๊ฐ์ ธ์ด
keySet() : key๊ฐ๋ค๋ง ๊ฐ์ ธ์ด
values() : value๋ค๋ง ๊ฐ์ ธ์ด
get(Object key) : key๊ฐ์ ํตํด value๋ฅผ ๊ฐ์ ธ์ด
getOrDefault(Object key, Object defaultValue) : key๊ฐ์ด ์์ผ๋ฉด defaultValue์ ๊ฐ์ ๋ฐํํจ, ๋ณดํต put์ด๋ ๊ฐ์ด ์ฌ์ฉํ๋๋ฏ
boolean containsKey(Object key) : key๊ฐ ํ ์ด๋ธ์ ์๋ ๊ฐ์ธ์ง์ ์ฌ๋ถ๋ฅผ ํ์ธ
boolean containsValue(Object value) : value๊ฐ ํ ์ด๋ธ์ ์๋ ๊ฐ์ธ์ง์ ์ฌ๋ถ๋ฅผ ํ์ธ
+)
hash table์ ๋ฐฐ์ด๊ณผ ๋งํฌ๋๋ฆฌ์คํธ๊ฐ ์กฐํฉ๋์ด์๋ ๊ตฌ์กฐ -> index๋ฒํธ๋ฅผ ํตํด์ ๊ฐ์ ์ฐพ์.
์ถฉ๋(Hash Collision)์ด ์๊ธธ ๊ฒฝ์ฐ ์ ํ๊ฒ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ O(1)์ด๋ผ๊ณ ํ ์ ์์.
์์๋ฅผ ํตํ ์ดํด๊ฐ ํ์ํ๋ค๋ฉด ์๋ฐ์ ์ ์ HashMap(2) ์์์ ์ฐธ๊ณ ํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค!
์ถ๊ฐ์ ์ผ๋ก ์๊ฒ๋ ์ ์ด ์๊ธด๋ค๋ฉด ๊ณ์ ํฌ์คํ ํ๊ฒ ์ต๋๋ค.