[Java] Map

Ahnickยท2021๋…„ 2์›” 20์ผ
0
post-thumbnail

๋ณธ ํฌ์ŠคํŠธ๋Š” ์ž๋ฐ”์˜ ์‹  Vol.2 ์ด์ƒ๋ฏผ ์ €์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค
๋” ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ๊นŠ์ด ์žˆ๋Š” ๋‚ด์šฉ์€ ์ฑ…์— ์žˆ์Šต๋‹ˆ๋‹ค.

Java Map

์ž๋ฐ”์—์„œ Map์€ Key์™€ Value์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
Collection๊ณผ ๋น„๊ตํ•œ Map์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ํ‚ค์™€ ๊ฐ’ ํ˜•ํƒœ๋กœ ์กด์žฌํ•œ๋‹ค
  • ํ‚ค๊ฐ€ ์—†์ด ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค
  • ๊ฐ’ ์—†์ด ํ‚ค๋งŒ ์ €์žฅํ•  ์ˆ˜๋„ ์—†๋‹ค
  • ํ‚ค๋Š” ํ•ด๋‹น Map์—์„œ ๊ณ ์œ ํ•ด์•ผ๋งŒ ํ•œ๋‹ค
  • ๊ฐ’์€ Map์—์„œ ์ค‘๋ณต๋˜์–ด๋„ ์ƒ๊ด€์—†๋‹ค

Map Interface

๋จผ์ € ์•ž์˜ Collection Post์—์„œ ๋ณธ ๊ฒƒ ์ฒ˜๋Ÿผ, Map์„ ๊ตฌํ˜„ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š”
๊ทธ ์šฉ๋„์— ๋”ฐ๋ผ HashMap, TreeMap, LinkedHashMap์ด ์กด์žฌํ•˜๋ฉฐ ์ถ”๊ฐ€์ ์œผ๋กœ
Hashtable ํด๋ž˜์Šค๋„ ์กด์žฌํ•˜์ง€๋งŒ Collection์˜ Vector์™€ ๊ฐ™์ด ์ž๋ฐ”์—์„œ๋Š”
Vector์˜ ์ƒ์œ„ํ˜ธํ™˜๊ฒฉ ArrayList๋‚˜ Hashtable์˜ ์ƒ์œ„ํ˜ธํ™˜๊ฒฉ HashMap ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค

๋‹ค๋งŒ Vector๋‚˜ Hashtable์€ Thread Safe๋ฅผ ์ง€์›ํ•œ๋‹ค๋Š” ์ ์ด ์กฐ๊ธˆ ๋‹ค๋ฅธ๋ฐ
์ž๋ฐ” ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” Thread Safe๋ฅผ ์œ„ํ•œ๋‹ค๋ฉด Concurrentํ•˜๊ฒŒ ArrayList๋‚˜
HashMap์„ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅ
ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Hashtable vs Map

์œ„์˜ ํŠน์ง•๊ณผ ํ•จ๊ป˜, Hashtable๊ณผ Map์˜ ์ฐจ์ด์ ์„ ๋” ์„ค๋ช…ํ•˜์ž๋ฉด

  • Map์€ Collection View๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ Hashtable์€ Enumeration ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
  • Map์€ ํ‚ค, ๊ฐ’, ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํ™˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ
    Hashtable์€ ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํ™˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
  • Map์€ ์ดํ„ฐ๋ ˆ์ด์…˜์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€๋งŒ
    Hashtable์€ ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • HashMap์€ ํ‚ค๋‚˜ ๊ฐ’์— null์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Hashtable์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

Map Interface Method

๋งต Interface์— ์กด์žฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค

๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ ์ด๋ฆ„ ๋ฐ ๋งค๊ฐœ ๋ณ€์ˆ˜์„ค๋ช…
Vput(K key, V value)๋งค๊ฐœ ๋ณ€์ˆ˜์ธ ํ‚ค์™€ ๊ทธ์— ๋Œ€์‘๋˜๋Š” Value๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
voidputAll(Map< ? extends K, ? extends V> m)๋งค๊ฐœ ๋ณ€์ˆ˜ m์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
Vget(Object key)๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’ V๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
Vremove(Object key)๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’ V๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
Set< K >keySet()ํ‚ค์˜ ๋ชฉ๋ก์„ Set ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
Collection< V >values()๊ฐ’์˜ ๋ชฉ๋ก์„ Collection ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
Set< Map, Entry<K,V>>entrySet()Map ์•ˆ์— Entry๋ผ๋Š” ํƒ€์ž…์˜ Set์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
intsize()Map์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค
voidclear()Map์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค

HashMap

HashMap์˜ ๋ฉ”์†Œ๋“œ๋Š” Map์˜ ๊ธฐ๋ณธ ๋ฉ”์†Œ๋“œ์™€ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋งŒ HashMap์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

HashMap์—๋Š” ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๊ฐ€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๊ณผ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ์ฐธ์กฐ ์ž๋ฃŒํ˜•
๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ๋ฐ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” hashCode() ๋ฉ”์†Œ๋“œ์™€
equals() ๋ฉ”์†Œ๋“œ๋ฅผ ์ž˜ ๊ตฌํ˜„ํ•ด๋†”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค๊ฐ€ ์ €์žฅ๋˜๋Š”๋ฐ hashCode ๋ฉ”์†Œ๋“œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด get ๋ฉ”์†Œ๋“œ๊ฐ€
์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์œ„ํ—˜์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

TreeMap

TreeMap์€ HashMap๊ณผ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ํ‚ค๋ฅผ ์ •๋ ฌํ•˜๋ฉด์„œ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ Set ์ปฌ๋ ‰์…˜์„ ๋‹ค๋ฃจ๋ฉด์„œ ๋ณด์•˜๋˜ HashSet๊ณผ TreeSet์˜ ์ฐจ์ด์ฒ˜๋Ÿผ
TreeMap์€ Key๊ฐ’์„ ์ •๋ ฌํ•˜๋ฉด์„œ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ํ‚ค๋ฅผ ์ •๋ ฌํ•  ๋•Œ
์ถ”๊ฐ€์ ์ธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

LinkedHashMap

LinkedHashMap์€ LinkedHashSet์˜ ์ž‘๋™ ๊ณผ์ •๊ณผ ๋น„์Šทํ•˜๊ฒŒ, Key๋ฅผ ์ €์žฅํ•œ
์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ put์„ ์ˆ˜ํ–‰ํ•œ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ
๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌ

์–ด์ œ Collection๊ณผ ํ•จ๊ป˜ ์˜ค๋Š˜์€ Map์„ ์ •๋ฆฌํ•˜๋ฉด์„œ ์ž๋ฐ”์˜ ์ž๋ฃŒ๊ตฌ์กฐ ๋Œ€๋ถ€๋ถ„์„
์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—๋Š” ์ฃผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์ด ์žˆ๊ณ  ๋งŽ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”
์ž๋ฃŒ๊ตฌ์กฐ๋“ค๋„ ์žˆ์ง€๋งŒ ์ž์‹ ์ด ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์šฉ๋„์™€ ํŠน์ง•๋“ค์„ ์ž˜
ํŒ๋‹จํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•˜๋Š”๊ฒŒ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€