[์ž๋ฃŒ๊ตฌ์กฐ] Java - ํ•ด์‹œํ…Œ์ด๋ธ”(HashTable) ์ด๋ก ์ •๋ฆฌ

2022. 12. 23. 18:51ยทAlgorithm/KBro Study

ํ•ด์‹ฑ(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
'Algorithm/KBro Study' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] Brute Force(๋ธŒ๋ฃจํŠธ ํฌ์Šค)
  • [์ž๋ฃŒ๊ตฌ์กฐ] B-tree, B+tree ์ด๋ก  ์ •๋ฆฌ
  • [์ž๋ฃŒ๊ตฌ์กฐ] Java - Heap(ํž™) ์ด๋ก ์ •๋ฆฌ + ๊ตฌํ˜„ + Priority Queue(์šฐ์„ ์ˆœ์œ„ ํ)
  • [์ž๋ฃŒ๊ตฌ์กฐ]Java - Binary Search Tree(์ด์ง„ ํƒ์ƒ‰ํŠธ๋ฆฌ) ๊ฐœ๋… + ๊ตฌํ˜„
_๊ฑฐ๋ˆ„
_๊ฑฐ๋ˆ„
๋ธ”๋กœ๊ทธ ์ด์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค! https://velog.io/@pigonhair/posts
  • _๊ฑฐ๋ˆ„
    ๊ฑฐ๋ˆ„๋„ค๋ฃธ๐Ÿ”‘
    _๊ฑฐ๋ˆ„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๊ฑฐ๋ˆ„๋„ค๋ฃธ (83)
      • Languages | Frameworks (41)
        • Java (10)
        • Spring (23)
        • Docker (8)
      • Git | Github (1)
      • DBMS (4)
        • SQL (4)
      • DevOps | Server (3)
      • OS (6)
        • Linux (6)
      • Algorithm (26)
        • Theory (1)
        • Data Structure (7)
        • BaekJoon (5)
        • Programmers (1)
        • KBro Study (12)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • Github
    • BaekJoon
    • solved class
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
_๊ฑฐ๋ˆ„
[์ž๋ฃŒ๊ตฌ์กฐ] Java - ํ•ด์‹œํ…Œ์ด๋ธ”(HashTable) ์ด๋ก ์ •๋ฆฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”