Map
๐ Map ย ย ย ๐ LinkedHashMap ย ย ย ๐ Doubly linked list ย ย ย ๐ TreeMap ย ย ย ๐ HashMap
Map
-
๋์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ํํํ ์ ์๊ฒ ํด์ฃผ๋ ์๋ฃํ
-
ํค(key)-๊ฐ(value)์ ํ ์์ผ๋ก ๊ฐ๋ ์๋ฃํ
-
value์ ์ค๋ณต์ ํ์ฉ๋๋, key์ ์ค๋ณต์ ํ์ฉ๋์ง ์์
-
์์๊ฐ ์ค์ํ์ง ์์
-
LinkedHashMap : ์ ๋ ฅ๋ ์์๋๋ก ๋ฐ์ดํฐ ์ ์ฅ
-
TreeHashMap : ์ ๋ ฅ๋ key์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅ
-
HashMap
-
HashMap์ ์ ๋ค๋ฆญ์ค๋ key, value ๋ชจ๋ String ์๋ฃํ
-
put(K key, V value) : ํญ๋ชฉ ์ถ๊ฐ
-
putAll(Map<? Extends K, ? Extends V> m) : ์ด๋ค map์ ๋ชจ๋ ํญ๋ชฉ์ ํด๋น map์ผ๋ก ๋ณต์ฌ
-
putIfAbsent(K key, V value) : ํด๋น key์ ๊ฐ์ด ์๊ฑฐ๋ null์ด๋ฉด์ฃผ์ด์ง value๋ฅผ ์ ์ฅํ๊ณ null ๋ฐํ, ๊ฐ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ ์ฅ๋์ด ์๋ value๊ฐ์ ๋ฐํ
-
get(Object key) : key์ ํด๋น๋๋ value ์ป๊ธฐ
-
getOrDefault(Object key, V defaultValue) : key์ ํด๋นํ๋ value๊ฐ ์์ ๋ null์ด ๋ฆฌํด๋๋๋ฐ, ์ด ๋ getOrDefault()๋ฅผ ์ฌ์ฉํ๋ฉด null ๋์ default ๊ฐ์ ์ป์ ์ ์์
-
containsKey(Object key) : ํด๋น key์ ์กด์ฌ ์ฌ๋ถ true/false๋ก ๋ฆฌํด
-
containsValue(Object value) : ํด๋น value์ ์กด์ฌ ์ฌ๋ถ true/false๋ก ๋ฆฌํด
-
isEmpty() : ๋งต์ด ๋น์ด์๋์ง ํ์ธ, ์ด๋ ํ key-value ๊ฐ๋ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉด true ๋ฆฌํด
-
remove(Object key) : ๋งต์ ํญ๋ชฉ ์ญ์ , value๊ฐ ๋ฆฌํด
-
size() : ์์์ ๊ฐ์ ๋ฆฌํด
-
keySet() : ๋งต์ ๋ชจ๋ key๋ฅผ ๋ฆฌํด
-
clear() : ๋งต์ ๋ชจ๋ ํญ๋ชฉ ์ญ์
-
replace(K key, V value) : ํด๋น key์ ๋ํ ๊ฐ ๋ณ๊ฒฝ
-
replace(K key, V oldValue, V newValue) : key๊ฐ ํน์ value์ผ ๋๋ง value ๊ฐ ๋ณ๊ฒฝ
LinkedHashMap
-
public class LinkedHashmap<K, V> extends HashMap<K, V> implements Map<K, V>
-
HashMap๊ณผ ๋์ผํ๊ฒ ํค-๊ฐ ์์ ์์๋ก ๊ฐ์ง๋ฉฐ, key์ ์ค๋ณต์ ํ์ฉํ์ง ์์
-
non-synchronized
-
HashMap๊ณผ๋ ๋ค๋ฅด๊ฒ LinkedHashMap์ ์ ๋ ฅ๋ ์์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
-
LinkedHashMap์ implementation์ ์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ(doubly-linked list)์ ๋งค์ฐ ๋น์ทํจ [before] - [key] - [value] - [after]
-
์ด์ค์ฐ๊ฒฐ๋ฆฌ์คํธ๋?
-
๋จ์์ฐ๊ฒฐ๋ฆฌ์คํธ(linked list)์๋ ๋ค๋ฅด๊ฒ ์ด์ ๋ ธ๋(previous)์ ๋ค์ ๋ ธ๋(next)๋ก ๊ตฌ์ฑ
-
๋ ธ๋์ ๋ ธ๋๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์์
-
๋ค์ ๋ ธ๋์ ํ์๋ง ๊ฐ๋ฅํ ๋จ๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ค๋ฅด๊ฒ ์๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ ธ๋ ํ์๋ฐฉํฅ์ด ์์ชฝ(์๋ค)๋ก ๊ฐ๋ฅํจ
-
์ด์ ๋ ธ๋๋ฅผ ์ง์ ํ๊ธฐ ์ํ ๋ณ์๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฌ์ฉํ๊ณ , ๊ตฌํ์ด ๋ณต์กํด์ง๋ค๋ ๋จ์ ์ด ์์
-
-
-
containsValue(Object value) / entrySet() / keySet() / get(Object key) / removeEldestEntry(Map.Entry<K, V> eldest) / values()
-
LRU Cache ๊ตฌํ ๊ฐ๋ฅ
TreeMap
-
์ด์งํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ Map ์ปฌ๋ ์
-
์ ์ฅ๊ณผ ๋์์ key์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ (๋ถ๋ชจ ํค๊ฐ๊ณผ ๋น๊ตํด ํค ๊ฐ์ด ๋ฎ์ ๊ฒ์ ์ผ์ชฝ ์์ ๋ ธ๋์, ๋์ ๊ฒ์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋์ ์ ์ฅ)
-
๋ฐ์ดํฐ ์ ์ฅ ์ ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ HashMap๋ณด๋ค ์ฑ๋ฅ์ด ๋จ์ด์ง์ง๋ง, ์ ๋ ฌ๋ ์ํ๋ก Map์ ์ ์งํ๊ฑฐ๋ ์ ๋ ฌ๋๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ผ ํ๋ ๋ฒ์ ๊ฒ์์ด ํ์ํ ๊ฒฝ์ฐ ํจ์จ์
-
TreeMap์ ์ด์งํ์ํธ๋ฆฌ์ ๋ฌธ์ ์ ์ ๋ณด์ํ ๋ ๋-๋ธ๋ ํธ๋ฆฌ(Red-Black Tree)๋ก ์ด๋ฃจ์ด์ง
-
๋ ๋-๋ธ๋ ํธ๋ฆฌ๋?
-
์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ
-
๊ฐ ๋ ธ๋๋ค์ red ํน์ black์ ์์์ ๊ฐ์ง
-
์ผ๋ฐ์ ์ธ ์ด์ง ํ์ ํธ๋ฆฌ๋ ํ์ฌ ๋ ธ๋๋ณด๋ค ๊ฐ์ด ์์ ๊ฒ์ ์์ ์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์, ๊ฐ์ด ํฐ ๊ฒ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๊ฐ์ง > ํธ๋ฆฌ์ ๋์ด๋งํผ ์๊ฐ ํ์ (O(log N)), ๊ท ํ์ด ๋ฌด๋์ง ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๊ฐ O(N) ๊น์ง ์ฆ๊ฐํ ์์์
-
๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ผ์ชฝ ์์์ผ๋ก, ํฐ ๊ฐ์ ๊ฐ์ง๋ ๋ ธ๋๋ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ฐฐ์น > ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ ์ ๊ท ํ์ ๋ง์ถค, ๊ฒ์/์ฝ์ /์ญ์ ์ O(log N)์ด ๋ณด์ฅ๋จ
-
-