โฆ Java Collection FrameWork(JCF)
์๋ฐ์์ ์ปฌ๋ ์ ์ด๋ ๊ฐ์ฒด(๋ฐ์ดํฐ)์ ํฉ, ๊ทธ๋ฃน, ๋ชจ์์ ์๋ฏธํ๋ค.
์๋ฐ์์ ๋ชจ๋ ์ปฌ๋ ์ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ํฌํจํ๋ "Collection FrameWork" ๋ผ๋ ๊ฐ๋ ์ด JDK1.2์์ ์ ์ ๋์๋ค.
- ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ํด๋์ค์ ์งํฉ์ ์๋ฏธํ๋ค.
- ์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐํํ์ฌ ํด๋์ค๋ก ๊ตฌํํด ๋์ ๊ฒ์ ๋งํ๋ค.
์ด๋ฌํ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ ์๋ฐ์ ์ธํฐํ์ด์ค(Interface)๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋๋ค.
๐ก ์ฌ๊ธฐ์ ์ ๊น! ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์๋ ๋ฐฐ์ด(Array)์ด ์๋๋ฐ ์ Collection์ ์ฌ์ฉํ๋ ๊ฑธ๊น?
๋ฐฐ์ด๊ณผ์ ์ฐจ์ด์ ์ ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํ๊ฒ ๋๋ค.
๋ฐฐ์ด์ new int[4]๋ฅผ ํ๋ฉด 4๊ฐ ๊ณต๊ฐ๋ฐ์ ๋ชป์ฐ๊ณ ๋ฏธ๋ฆฌ ์ ์ธ์ ํตํด 4๊ฐ์ ๊ณต๊ฐ์ ๋ง๋ค์ด์ผ ํ์ง๋ง(์ ์ ๋ฉ๋ชจ๋ฆฌ),
collection์ ๊ณต๊ฐ์ด ๊ณ์ ํ์ํ ๋งํผ ์ถ๊ฐํ ์ ์๋ค(๋์ ๋ฉ๋ชจ๋ฆฌ).
Collection ์ธํฐํ์ด์ค(java.util.Collection) ์ Map ์ธํฐํ์ด์ค(java.util.Map) ์ด ์๋ฐ ์ปฌ๋ ์ ํด๋์ค์ ์ฃผ์ ๋ฃจํธ ์ธํฐํ์ด์ค์ด๋ค.
Collection ์ธํฐํ์ด์ค๋ List, Set, Queue๋ก ํฌ๊ฒ 3๊ฐ์ง ์์ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฅํ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ Map์ ๊ฒฝ์ฐ Collection ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๊ณ ์์ง ์์ง๋ง Collection์ผ๋ก ๋ถ๋ฅ๋๋ค.
โฆ Collection ์ธํฐํ์ด์ค์ ํน์ง
์ธํฐํ์ด์ค | ๊ตฌํํด๋์ค | ํน์ง |
Set | HashSet TreeSet |
์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค. |
List | LinkedList Vector ArrayList |
์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ๋ค. |
Queue | LinkedList PriorityQueue |
List์ ์ ์ฌ |
Map | Hashtable HashMap TreeMap |
ํค(Key), ๊ฐ(Value)์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ผ ์งํฉ์ผ๋ก, ์์๋ ์ ์ง๋์ง ์์ผ๋ฉฐ ํค(Key)์ ์ค๋ณต์ ํ์ฉํ์ง ์์ผ๋ ๊ฐ(Value)์ ์ค๋ณต์ ํ์ฉํ๋ค. |
โฆ ์ปฌ๋ ์ ํ๋ ์์ํฌ์ ์ฃผ์ ์ธํฐํ์ด์ค
1. List ์ธํฐํ์ด์ค
์ค๋ณต๋๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํด์ผ ํ ๋, ๋ฐฐ์ด์ ๋ค์ด๊ฐ ์์๋ฅผ ์ ์งํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. (์ค๋ณต o, ์์ o)
List ์ธํฐํ์ด์ค๋ Collection์ ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ค๊ณผ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฐฐ์ด์ฒ๋ผ ์์๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด List ์ธํฐํ์ด์ค์์ ArrayList, LinkedList, Vector, Stack ์์๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค.
์ด๋ ArrayList์ Vector ํด๋์ค๋ ๊ฑฐ์ ๋์ผํ์ง๋ง ArrayList๋ Thread safeํ์ง ์๊ณ Vector๋ Thread safe ํ๋ค.
(Thread safeํ์ง ์๋ค๋ ๊ฒ์ ๊ฐ์ฒด์ ์ฌ๋ฌ ๋ช
์ด ๋ฌ๋ ค๋ค์ด ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ)
- ArrayList
- ๋จ๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ๋ก ๊ฐ ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ด ์กฐํ ๊ธฐ๋ฅ์ ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ค.
- ๊ฒ์์ด ๋น ๋ฅด๋ค. ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ค๋ฉด ๋น ๋ฅด๋ค.
- ํ์ง๋ง List๋ค์ ์ค๊ฐ์ค๊ฐ ๋ฐ์ดํฐ์ ๋น๋ฒํ ์ถ๊ฐ ์ญ์ ๊ฐ ์ผ์ด๋๋ค๋ฉด ๋๋ฆฌ๋ค.
- List ์ปฌ๋ ์ ์ ์ฌ๋ฌ ์ค๋ ๋์์ ๊ณต์ ํด์ผ ํ๋ค๋ฉด Thread safe ํ์ง ์๋ค. - LinkedList
- ์๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ์ ์ฝ์ , ์ญ์ ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ ์์น์ ๋ณด๋ง ์์ ํ๋ฉด ๋๊ธฐ์ ์ข์ ์ฑ๋ฅ์ ๋ฐํํ๋ค.
- ํ์ง๋ง ๊ฒ์์ด ๋๋ฆฌ๋ค.
- ์คํ, ํ, ์๋ฐฉํฅ ํ ๋ฑ์ ๋ง๋ค๊ธฐ ์ํ ์ฉ๋๋ก ์ฐ์ - Vector
- ๊ณผ๊ฑฐ์ ๋์ฉ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๊ณ , ๋ด๋ถ์์ ์๋์ผ๋ก ๋๊ธฐํ ์ฒ๋ฆฌ๊ฐ ์ผ์ด๋ ๋น๊ต์ ์ฑ๋ฅ์ด ์ข์ง ์๊ณ ๋ฌด๊ฑฐ์ ์ต๊ทผ์๋ ์ ์ฐ์ด์ง ์๋๋ค
- ArrayList์ ๋ด๋ถ ๊ตฌ์กฐ๋ ๋์ผํ์ง๋ง Thread safe ํ๋ค.
2. Set ์ธํฐํ์ด์ค
์์๊ฐ ํ์ ์๊ณ , set์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต์ด ๋๋ฉด ์ ๋ ๋ ์ฌ์ฉํ๋ค. (์ค๋ณต x, ์์ x)
์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ์ผ๋ก ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค. (๋จ, LinkedHashSet์ ์์๋ฅผ ๋ณด์ฅํ๋ค.)
- HashSet
- ๊ฐ์ฅ ๋น ๋ฅธ ์์ ์ ๊ทผ ์๋
- ์์๋ฅผ ์์ธกํ ์ ์๋ค.
- Thread safe ํ์ง ์๋ค. - TreeSet
- ์ ๋ ฌ๋ฐฉ๋ฒ์ ์ง์ ํ ์ ์๋ค. (๊ธฐ๋ณธ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ)
- Thread safe ํ์ง ์๋ค. - LinkedHashSet
- ์ ๋ ฅ๋ ์์๋๋ก ์ ์ฅํ๋ค.
- Thread safe ํ์ง ์๋ค.
3. Map ์ธํฐํ์ด์ค
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋, key์ value ์์ผ๋ก ์ ์ฅํ๊ณ ์ถ์ ๋, ๊ทธ๋ฆฌ๊ณ , key๋ฅผ ์ค๋ณต ์ ์ฅํ๊ณ ์ถ์ง ์์ ๋ ์ฌ์ฉํ๋ค. (key ์ค๋ณต x, value ์ค๋ณต o, ์์ x)
Map์ ํค(Key)์ ๊ฐ(value)์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ ์งํฉ์ด๋ค.
๐ก Map์ ์ฃผ์ ํน์ง
- ๋ชจ๋ ๋ฐ์ดํฐ๋ ํค์ ๊ฐ์ด ์กด์ฌํ๋ค.
- ํค๊ฐ ์์ด ๊ฐ๋ง ์ ์ฅํ ์๋ ์๋ค.
- ๊ฐ์ด ์์ด ํค๋ง ์ ์ฅํ ์๋ ์๋ค.
- ํค๋ ํด๋น Map์์ ๊ณ ์ ํด์ผ๋ง ํ๋ค.
- ๊ฐ์ Map์์ ์ค๋ณต๋์ด๋ ์ ํ ์๊ด์๋ค.
- ๋ฐ์ดํฐ ์ถ๊ฐ ์์๋ ์ค์ํ์ง ์๋ค (๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์์๋๋ก ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋์ง ์๋๋ค).
- Hashtable
- HashMap๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง ๋๊ธฐํ ์ง์
- null๋ถ๊ฐ
- Thread safe ํ๋ค. - HashMap
- ์ค๋ณต๊ณผ ์์๊ฐ ํ์ฉ๋์ง ์์ผ๋ฉฐ null๊ฐ์ด ์ฌ ์ ์๋ค.
- ๋๋ถ๋ถ HashMap ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋์๋ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ค. ํ์ง๋ง HashMap์ ๋ด์ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๋ง์ ๊ฒฝ์ฐ์๋ ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ฃผ๋ ๊ฒ์ ๊ถ์ฅํ๋ค. - TreeMap
- ํค์ ๊ฐ์ ์ ์ฅํ๋ ๋์์ ํค๋ฅผ ์ ๋ ฌํ๋ค.
- ํค(key)๊ฐ ์ ๋ ฌ๋์ด ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ ๋น ๋ฅด๋ค.
- ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ฉฐ, ์ ๋ ฌ๋๋ ์์๋ ์ซ์ > ์ํ๋ฒณ ๋๋ฌธ์ > ์ํ๋ฒณ ์๋ฌธ์ > ํ๊ธ ์์ด๋ค.
- ์ ๋ ฌ์ ํด์ผ ํ ํ์๊ฐ ์๋ค๋ฉด HashMap ๋ณด๋ค๋ TreeMap์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ๋ฆฌํ๋ค.
๋๊ธ