ํด์ฑ(Hashing)์ด๋?
ํด์ฑ์ด๋ ์์์ ๊ธธ์ด์ ๊ฐ์ ํด์ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๊ฐ์ผ๋ก ๋ณํํ๋ ์์ ์ ๋งํ๋ค.
ํด์ํ ์ด๋ธ(HashTable)์ด๋?
ํด์ ํ ์ด๋ธ์ ํด์ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ๊ฐ์ ์์ธ(index)์ผ๋ก ์ผ์ (Key, Value)๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
ํด์ ํ ์ด๋ธ์ด ๋น ๋ฅธ ๊ฒ์์๋๋ฅผ ์ ๊ณตํ๋ ์ด์ ๋ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด(๋ฒํท)์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
ํด์ ํ ์ด๋ธ์ ๊ฐ๊ฐ์ Key๊ฐ์ ํด์ํจ์๋ฅผ ์ ์ฉํด ๋ฐฐ์ด์ ๊ณ ์ ํ index๋ฅผ ์์ฑํ๊ณ , ์ด index๋ฅผ ํ์ฉํด ๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ๊ฒ์ํ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ์ค์ ๊ฐ์ด ์ ์ฅ๋๋ ์ฅ์๋ฅผ ๋ฒํท ๋๋ ์ฌ๋กฏ์ด๋ผ๊ณ ํ๋ค.
์ด๋ฌํ ํด์ฑ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด Key๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ๋ ํด์ ํจ์๋ฅผ 1๋ฒ๋ง ์ํํ๋ฉด ๋๋ฏ๋ก ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ/์ญ์ /์กฐํํ ์ ์๋ค. ํด์ํ ์ด๋ธ์ ํ๊ท ์๊ฐ๋ณต์ก๋๋ O(1)์ด๋ค.
Java์ HashMap(ํด์๋งต)๊ณผ HashTable(ํด์ํ ์ด๋ธ) ์ฐจ์ด
Java์์ HashTable๊ณผ HashMap์ ์ฐจ์ด๋ ๋๊ธฐํ ์ง์ ์ฌ๋ถ์ ์๋ค.
๋ณ๋ ฌ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๋๊ธฐํ๋ฅผ ์ง์ํด์ค๋ค๋ ๊ฒ์ ์๋ฏธํ๋ Synnchronized ํค์๋๊ฐ ํด์ํ ์ด๋ธ์ ๋ฉ์๋์๋ ๋ถ์ด์๋๋ฐ, ์ด๊ฒ์ ํด๋น ํจ์๋ฅผ ์ฒ๋ฆฌํ๋ ์๊ฐ์ด ์กฐ๊ธ ์ง์ฐ๋จ์ ์๋ฏธํ๋ค.
๋ฐ๋ผ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด์ ์์์ ๋๊ธฐํ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด ํด์ํ ์ด๋ธ(HashTable)์ ์ฌ์ฉํด์ผ ํ๊ณ , ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์๊ฑฐ๋ ์์์ ๋๊ธฐํ๋ฅผ ๊ณ ๋ คํ์ง ์๋ ์ํฉ์ด๋ผ๋ฉด ํด์๋งต(HashMap)์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๐์ฐธ๊ณ ์ฌ์ดํธ
[DS] ํด์ฌ ํ ์ด๋ธ(Hash Table)์ด๋?
[์๋ฃ๊ตฌ์กฐ] ํด์ํ ์ด๋ธ(HashTable)์ด๋?
'Algorithm > KBro Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] Brute Force(๋ธ๋ฃจํธ ํฌ์ค) (0) | 2023.01.08 |
---|---|
[์๋ฃ๊ตฌ์กฐ] B-tree, B+tree ์ด๋ก ์ ๋ฆฌ (0) | 2022.12.28 |
[์๋ฃ๊ตฌ์กฐ] Java - Heap(ํ) ์ด๋ก ์ ๋ฆฌ + ๊ตฌํ + Priority Queue(์ฐ์ ์์ ํ) (0) | 2022.12.11 |
[์๋ฃ๊ตฌ์กฐ]Java - Binary Search Tree(์ด์ง ํ์ํธ๋ฆฌ) ๊ฐ๋ + ๊ตฌํ (0) | 2022.12.06 |
[์๋ฃ๊ตฌ์กฐ] ์๋ฐ LinkedList(์ฐ๊ฒฐ๋ฆฌ์คํธ)? (0) | 2022.12.01 |