Map

Key-Value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

  • Java Map ๊ณ„์ธต ๊ตฌ์กฐ

Map Interface

  • Map ์ธํ„ฐํŽ˜์ด์Šค๋Š” Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š์Œ

  • Map ์ธํ„ฐํŽ˜์ด์Šค๋Š” key์™€ value๋ฅผ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ entry๋กœ ์ €์žฅ

  • put, get, remove, containsKey, containsValue, size, isEmpty, clear ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ ์ œ๊ณต

์ œ๊ณต ๋ฉ”์„œ๋“œ

Map ํ•˜์œ„ Class ํŠน์ง•

ClassBase ClassBase InterfaceDuplicate KeyDuplicate ValueOrderGet

HashMap

AbstractMap

Map

X

O

X

O(1)

TreeMap

SortedMap

NavigableMap

X

O

O

O(log n)

LinkedHashMap

HashMap

Map

X

O

O

O(1)

HashMap

  • ๋‚ด๋ถ€์ ์œผ๋กœ Entry ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌ

  • put() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ Entry๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด key ๊ฐ’์œผ๋กœ hash๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ Entry๋ฅผ ์ €์žฅํ•  ์œ„์น˜(์ ‘๊ทผ ์ธ๋ฑ์Šค)๋ฅผ ์ฐพ์•„ ์‚ฌ์šฉ

  • hash๊ฐ’ ๊ณ„์‚ฐ์€ ์ž๋ฐ” ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ Object์˜ hashCode() ๋ฉ”์„œ๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘

  • HashCode๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ

TreeMap

  • key-value ์Œ์„ ๋‚ด๋ถ€์ ์œผ๋กœ Red-Black Tree๋กœ ๊ด€๋ฆฌ

  • key ๊ฐ’์œผ๋กœ Red-Black Tree๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— Comparator ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ key ๊ฐ’์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ

LinkedHashMap

  • HashMap๊ณผ ๋™์ผํ•˜๊ฒŒ ๋‚ด๋ถ€์ ์œผ๋กœ Entry ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌ

  • before์™€ after๋ฅผ ์ด์šฉํ•˜์—ฌ Entry๋ฅผ ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ Entry๋ฅผํ„ฐ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋จ

Last updated