Bibi's DevLog ๐Ÿค“๐ŸŽ

[TIL] ๊ฐœ์ธ ๊ณต๋ถ€ - ์ž๋ฐ” Map, HashMap ๋ณธ๋ฌธ

TIL

[TIL] ๊ฐœ์ธ ๊ณต๋ถ€ - ์ž๋ฐ” Map, HashMap

๋น„๋น„ bibi 2021. 1. 10. 01:10

[21.01.09]

์˜ค๋Š˜์€ ์›๋ž˜ ์–ด์ œ ๋งŽ์ด ํ—ค๋ฉจ๋˜ ์…ธ์Šคํฌ๋ฆฝํŠธ ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๋ ค ํ–ˆ๋˜ ๋‚ ์ด๋‹ค.
๋ง‰์ƒ VM์ผœ๊ณ  ํ„ฐ๋ฏธ๋„์„ ๋งŒ์ ธ๋ณด๋‹ˆ vi๋ฅผ ๋“ค์—ฌ๋‹ค๋ด๋„ ๋ˆˆ์— ์ž˜ ์•ˆ ๋“ค์–ด์™”๋‹ค..
๋‚ด๊ฐ€ ์ง  ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ์–ด์„œ๋„ ์žˆ์ง€๋งŒ, '์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ'๊ฐ€ ์ œ์ผ ํฐ ์ด์œ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
๊ทธ๋ž˜์„œ ๋ฆฌ๋ˆ…์Šค์™€ ์…ธ์Šคํฌ๋ฆฝํŠธ๋Š” ์ฃผ๋ฌธํ•œ '๋งŒํ™”๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ๊ด€๋ฆฌ' ์ฑ…์ด ๋„์ฐฉํ•˜๋ฉด,
๊ทธ๊ฑธ ๋ณด๋ฉด์„œ ์ฒด๊ณ„์ ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๊ตฌ๊ธ€๋ง๊ณผ ์ธํ„ฐ๋„ท ์ž๋ฃŒ๋กœ๋งŒ ๊ณต๋ถ€ํ•  ๋•Œ์™€ ์ฑ…์œผ๋กœ ๊ณต๋ถ€ํ•  ๋–„๋ฅผ ๋น„๊ตํ•ด ๋ณด๋ฉด, ํ›„์ž๊ฐ€ ํ›จ์”ฌ ๋‚˜์—๊ฒŒ ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
์•„๋ฌด๋ฆฌ ๋“ค์–ด์˜ค๋Š” ์ •๋ณด๊ฐ€ ๋งŽ์•„๋„, ๋จธ๋ฆฟ์†์ด ๋’ค์ฃฝ๋ฐ•์ฃฝ์ด๋ฉด ์ •๋ฆฌ๊ฐ€ ์•ˆ ๋˜์–ด์„œ ๋‚˜์ค‘์— ๋‚จ๋Š” ๊ฒŒ ๋ณ„๋กœ ์—†๋‹ค.
๋ฌผ๋ก  ์ฑ…์„ ๋ณด๋ฉด์„œ ์‹ค์Šต์„ ๋ณ‘ํ–‰ํ•ด์•ผ๊ฒ ์ง€๋งŒ.
๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ์˜ค๋Š˜ ์ €๋… ๊ณต๋ถ€๋Š” ๋งˆ์Šคํ„ฐ์ฆˆ ์ „๋ถ€ํ„ฐ ๋ณด๋˜ ์ž๋ฐ”๊ธฐ๋ณธ์„œ์˜ ์ง„๋„๋ฅผ ์ด์–ด์„œ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

TIL
์ž๋ฐ” Map๊ณผ HashMap

Map

- ์ž๋ฐ” Map์€ ํ‚คKey์™€ ๊ฐ’Value๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ.
- ํ‚ค๋Š” ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Œ, ๊ฐ’์€ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋จ.
- ํ‚ค ์—†์ด ๊ฐ’๋งŒ, ๊ฐ’ ์—†์ด ํ‚ค๋งŒ ์ €์žฅํ•˜๋Š” ๊ฒƒ : ๋‘˜ ๋‹ค ๋ถˆ๊ฐ€๋Šฅ.
- Map์€ java.util.Map ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์Œ.

Map์˜ ์ฃผ์š” ๋ฉ”์„œ๋“œ

- put(K, V) : ํ‚ค์™€ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ
- get(K) : ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’V ๋ฆฌํ„ด
- remove(K) : ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ์‚ญ์ œ
- keySet() : ํ‚ค ๋ชฉ๋ก์„ Setํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ด
- values() : ๊ฐ’ ๋ชฉ๋ก์„ Collectionํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ด
- entrySet() : Entry๋ผ๋Š” ํƒ€์ž…์˜ Set์„ ๋ฆฌํ„ด -> ์ด ๋ถ€๋ถ„์€ ์‹ค์Šต์€ ์ดํ•ด๊ฐ€ ๋˜๋Š”๋ฐ, ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€๋Š” ๋” ์ฐพ์•„๋ด์•ผ ์ดํ•ด๋  ๊ฒƒ ๊ฐ™๋‹ค.
- size() : Map์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ด
- clear() : Map์˜ ๋‚ด์šฉ์„ ์‚ญ์ œ

Map์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค

- ๋Œ€ํ‘œ์ ์œผ๋กœ HashMap, TreeMap, LinkedHashMap, Hashtable์ด ์žˆ์Œ
- ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฒƒ์€ HashMap ํด๋ž˜์Šค.
- Map๊ณผ Hashtable์˜ ์ฐจ์ด์ 
- HashMap๊ณผ Hashtable์˜ ์ฐจ์ด์ 
- Map์œผ๋กœ ๋๋‚˜๋Š” ํด๋ž˜์Šค๋“ค์„ thread-safeํ•˜๊ฒŒ ์„ ์–ธํ•˜๋Š” ๋ฒ•

 

HashMap

์ƒ์†๊ด€๊ณ„

java.lang.Object - java.util.AbstractMap<K,V> - java.util.HashMap<K,V>

์ธํ„ฐํŽ˜์ด์Šค

Serializable, Cloneable, Map<E>

์ƒ์„ฑ์ž(4๊ฐœ)

HashMap() ๋˜๋Š” HashMap(int initialCapacity) ๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉ.
* HashMap์˜ ํ‚ค๊ฐ€ ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์˜์ 

๋ฉ”์†Œ๋“œ

- HashMap ์ฃผ์š”๋ฉ”์†Œ๋“œ๋Š” ๋Œ€๋ถ€๋ถ„ Map์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋˜์–ด ์žˆ๋‹ค.
- put(), get(), keySet(), values(), entrySet()-getKey()์™€ getValue(), containsKey(), containsValue(), remove(), size()