# ์ปฌ๋ ์ (Java Collections Framework)
# Map
๊ฒ์ํ ์ ์๋ ์ธํฐํ์ด์ค
์์๊ฐ ์๋ค.
๋ง์ ์์ ๋ฐ์ดํฐ์์ ์ํ๋ ํน์ ๋ฐ์ดํฐ์ ์ ๊ทผ(๊ฒ์)ํ ๋ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ Key์ Value์ ํํ๋ก ์ฝ์ ๋๋ฉฐ, Key๋ฅผ ์ด์ฉํด์ Value๋ฅผ ์ป์ ์ ์๋ค.
๋์ผํ ๋ฐ์ดํฐ๋ฅผ Key๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. (๋จ, key๊ฐ์ด ๋ค๋ฅด๊ณ value๊ฐ์ด ๋์ผํ ๊ฒ์ ๊ฐ๋ฅ)
HashMap๊ณผ HashTable์ ๊ณตํต์ ๊ณผ ์ฐจ์ด์
- ๊ณตํต์ : ํค(Key)์ ๊ฐ(Value)์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ํค๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์๋ค.
- ์ฐจ์ด์ : ์ผ๋ฐ์ ์ผ๋ก ๋๊ธฐํ(Synchronization)๊ฐ ํ์ ์๋ค๋ฉด HashMap์, ๋๊ธฐํ ๋ณด์ฅ์ด ํ์ํ๋ค๋ฉด Hashtable์ ์ฌ์ฉํ๋ฉด๋๋ค. HashMap๊ณผ Hashtable์ ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ๋๋ ํ์ง ์๋๋๋ ์ธก๋ฉด ์ด์ธ์๋ ์ฐจ์ด๊ฐ ๊ฑฐ์ ์๋ค.
- ์๋์ ์ธ ์ธก๋ฉด์์๋ ๊ตฌํ์ด๋ผ ํ ์ ์๋ Hashtable์ ๋๊ธฐํ ์ฒ๋ฆฌ๋ผ๋ ๋น์ฉ๋๋ฌธ์ HashMap์ ๋นํด ๋ ๋๋ฆฌ๋ค๊ณ ํ๋ค.
- ํ ์๋ฐ ๊ด๋ จ ์์ ์ ์ํ๋ฉด Vector์ ์์ํธํ(?)๊ฐ๋ ์ธ ArrayList์ ์ฌ์ฉ์ ๊ถ์ฅํ๋ฏ ์๋ก์ด ๋ฒ์ ์ธ HashMap์ ํ์ฉํ๊ณ ๋๊ธฐํ๊ฐ ํ์ํ ์์ ์์๋ Java 5๋ถํฐ ์ ๊ณตํ๋ ConcurrentHashMap์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ผ ํํํ๋ค.
# Collection
- List
- ์์๊ฐ ์๋ Collection
- ๋ฐ์ดํฐ๋ฅผ ์ค๋ณตํด์ ํฌํจํ ์ ์๋ค.
- ์์ฐจ์ ์ผ๋ก ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ต์ธ์คํ๊ฑฐ๋ ์ ๋ ฅํ ๋ ์ฌ์ฉํ๋ค.
- Vector์ ArrayList์ ์ฐจ์ด์
- Vector๋ ๋๊ธฐํ๊ฐ ์ด๋ฏธ ๋์ด ์๋ ํด๋์ค๊ณ ArrayList๋ ๋๊ธฐํ์ฒ๋ฆฌ๊ฐ ์๋ ํด๋์ค์ด๋ค.
- Vector๋ ํ ๋ฒ์ ํ๋์ ์ฐ๋ ๋๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ, ArrayList๋ ๋์์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. (ArrayList์์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ์์ธ์ค ํด์ผํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฐ์๊ฐ ๋ช ์์ ์ผ๋ก ๋๊ธฐํ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค.)
- ๋ฉํฐ์ฐ๋ ๋ ์ํฉ์ด ์๋ ํ๊ฒฝ์์ ArrayList๊ฐ ๋ ๋น ๋ฅด๋ค.
- Set
- ์งํฉ์ ์ธ ๊ฐ๋ ์ Collection
- ์์์ ์๋ฏธ๊ฐ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ค๋ณตํด์ ํฌํจํ ์ ์๋ค.
- ์์ฐจ์ ์ธ ์ ๊ทผ์ ์ํด Iterator๋ฅผ ์ฌ์ฉํ๋ค.
# Collections Framework ์ ํ ๊ณผ์
Map๊ณผ Collection ์ธํฐํ์ด์ค ์ค ์ ํ 1-1. Collection ์ ํ ์ ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ List์ Set์ค ์ ํ
์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ Map, List, Set ๊ฐ๊ฐ์ ํ์ ๊ตฌํ์ฒด๋ฅผ ์ ํ
2-1. Map: HashMap, LinkedHashMap, HashTable, TreeMap
2-2. List: LinkedList, ArrayList
2-3. Set: TreeSet, HashSet
# Reference & Additional Resources
- https://github.com/WeareSoft
- https://madplay.github.io/post/java-collection-synchronize
- https://odol87.tistory.com/3