๐ Collection Framework๋?

โ
์๋ฃ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ํ์คํ๋ ํด๋์ค์ ์ธํฐํ์ด์ค์ ์งํฉ
- "๋ฐ์ดํฐ๋ฅผ ๋ด์ ๊ทธ๋ฆ + ๋ค๋ฃจ๋ ๊ธฐ๋ฅ"์ ์ฒด๊ณ์ ์ผ๋ก ์ ๊ณตํด์ค.
- ๋ฐฐ์ด(
Array
)์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ด๊ณ , ๋ณต์กํ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ๋ฐ,
์ปฌ๋ ์
ํ๋ ์์ํฌ๋ ๋์ ํฌ๊ธฐ, ๊ฒ์, ์ ๋ ฌ, ์ถ๊ฐ/์ญ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํจ.
- java.util ํจํค์ง์ ํฌํจ
- Collection: ์ฌ๋ฌ ๊ฐ์ฒด(๋ฐ์ดํฐ)๋ฅผ ๋ชจ์ ๋์ ๊ฒ์ ์๋ฏธ
- framework: ํ์คํ, ์ ํํ๋ ์ฒด๊ณ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์
๐ ์๋ฃ๊ตฌ์กฐ(data structure)๋?
โ
์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ํจ์จ์ ์ผ๋ก ๊บผ๋ด๊ณ , ์กฐ์ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
- "๋ฐ์ดํฐ๋ฅผ ์ด๋ค ๋ชจ์์ผ๋ก ์์๋๊น?" ํ๋ ๋ฌธ์ ์
- CPU๋ ์ฐ์ฐ์ ํ์ง๋ง, RAM(๋ฉ๋ชจ๋ฆฌ) ์ ๊ทธ ์ฐ์ฐ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ๊ตฌ์กฐ๋ก ๋ด์๋์ง๊ฐ ์ค์ํ๋ค.
๐ ๋ ๊ฐ์ง ๊ทผ๋ณธ ๊ตฌ์กฐ (Foundation Structures)


์๋ฃ๊ตฌ์กฐ์ ๋ฟ๋ฆฌ๋ฅผ ๋ณด๋ฉด ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ง๋ค ๐
1. ๋ฐฐ์ด(Array) ๊ธฐ๋ฐ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์์ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋จ.
- ์ธ๋ฑ์ค๋ก ๋ฐ๋ก ์ ๊ทผ ๊ฐ๋ฅ (๋๋ค ์ ๊ทผ O(1))
- ํ์ง๋ง ์ค๊ฐ ์ฝ์
/์ญ์ ๊ฐ ๋นํจ์จ์ (O(n))
๐ ์:
- Array, Matrix(ํ๋ ฌ), HashTable(ํด์ ํ
์ด๋ธ์ ๋ด๋ถ ๋ฒํท)
- CPU ์บ์ ์นํ์ โ ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ์ด๋ผ ๋น ๋ฆ
๐น Array
[10][20][30][40][50]
โ โ โ โ โ
์ฃผ์+0 ์ฃผ์+1 ...
- ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก
- ์ธ๋ฑ์ค ๊ณ์ฐ = ์์์ฃผ์ + (index ร ์๋ฃํ ํฌ๊ธฐ)


2. ๋
ธ๋(Node, Pointer) ๊ธฐ๋ฐ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์์์ ํฉ์ด์ ธ ์๊ณ , ํฌ์ธํฐ(์ฐธ์กฐ)๋ฅผ ํตํด ์ฐ๊ฒฐ๋จ.
- ์ฝ์
/์ญ์ ๊ฐ ๋น ๋ฆ (ํฌ์ธํฐ๋ง ๋ฐ๊ฟ์ฃผ๋ฉด ๋จ) โก๏ธ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ์ฉ์ด
- ํ์ง๋ง ์ธ๋ฑ์ค ์ ๊ทผ์ด ๋นํจ์จ์ (O(n))
๐ ์:
- Linked List, Tree, Graph
- ๋ฉ๋ชจ๋ฆฌ์ ํฉ์ด์ ธ ์์ผ๋ ์บ์ ์นํ์ฑ ๋ฎ์
๐น Node (Linked List ์์)
[Data:10 | Next:์ฃผ์200] โ [Data:20 | Next:์ฃผ์340] โ [Data:30 | Next:null]
- ํฉ์ด์ ธ ์์ง๋ง ํฌ์ธํฐ(์ฃผ์)๋ก ์ด์ด์ง
- CPU๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ผ๋ ค๋ฉด "๋ค์ ์ฃผ์"๋ฅผ ๋ฐ๋ผ๊ฐ์ผ ํจ โ ์บ์ ๋นํจ์จ


๐ Array vs Node ๊ธฐ๋ฐ ๋น๊ต
ํน์ง | Array ๊ธฐ๋ฐ | Node ๊ธฐ๋ฐ |
---|
๋ฉ๋ชจ๋ฆฌ ๋ฐฐ์น | ์ฐ์์ | ๋น์ฐ์์ |
์ ๊ทผ ์๋ | ๋น ๋ฆ (O(1), ์ธ๋ฑ์ค) | ๋๋ฆผ (O(n), ํ์ ํ์) |
์ฝ์
/์ญ์ | ๋๋ฆผ (๋ฐ์ดํฐ ์ด๋ ํ์) | ๋น ๋ฆ (ํฌ์ธํฐ๋ง ๋ณ๊ฒฝ) |
์บ์ ํจ์จ | ์ข์ | ๋์จ |
์ฌ์ฉ ์์ | ๋ฐฐ์ด, ํด์ ํ
์ด๋ธ | ์ฐ๊ฒฐ๋ฆฌ์คํธ, ํธ๋ฆฌ, ๊ทธ๋ํ |
๐ก Collection ํต์ฌ ์ธํฐํ์ด์ค
โ๏ธ List์ Set์ ๊ณตํต์ ์ธ ๋ถ๋ถ๋ง ๋ฝ์์ Collection์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์๋ค.
๐ List

- ์์๊ฐ ์๋ ๋ฐ์ดํฐ์ ์งํฉ
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉ
- ๋๊ธฐ์ ๋ช
๋จ
ArrayList, LinkedList, Stack, Vector ...
โ๏ธList ๋ฉ์๋

๐ Set

- ์์๋ฅผ ์ ์งํ์ง ์๋ ๋ฐ์ดํฐ์ ์งํฉ.
- ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ค.
- ์์ ์ ์์งํฉ, ์์์ ์งํฉ
HashSet, TreeSet ...
โ๏ธ Set์ธํฐํ์ด์ค ๋ฉ์๋ - Collection์ธํฐํ์ด์ค์ ๋์ผ
โ๏ธ ์งํฉ๊ณผ ๊ด๋ จ๋ ๋ฉ์๋
- (Collection์ ๋ณํ๊ฐ ์์ผ๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฐํ)

๐ Map

- LinkedHashMap์ ์์๊ฐ ์๋ค.
- ํค(key)์ ๊ฐ(value)์ ์(pair)์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ์ ์งํฉ ์์๋ ์ ์ง๋์ง ์์ผ๋ฉฐ, ํค๋ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , ๊ฐ์ ์ค๋ณต์ ํ์ฉํ๋ค.
- ์ฐํธ๋ฒํธ, ์ง์ญ๋ฒํธ(์ ํ๋ฒํธ)
HashMap, TreeMap, Hashable, Properties ...
โ๏ธ Map ๋ฉ์๋

๐ก Collection ์ธํฐํ์ด์ค ๋ฉ์๋
โ๏ธ int size()
- Collection์ ์ ์ฅ๋ ๊ฐ์ฒด์ ๊ฐ์๋ฅผ ๋ฐํํ๋ค.
โ๏ธ Object[] toArray()
- Collection์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด๋ฐฐ์ด(Object[])๋ก ๋ฐํํ๋ค.
โ๏ธ Object[] toArray(Object a)
- ์ง์ ๋ ๋ฐฐ์ด์ Collection์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํด์ ๋ฐํํ๋ค.
๐ ์ถ๊ฐ
โ๏ธ boolean add(Object o) / boolean addAll(Collection c)
- ์ง์ ๋ ๊ฐ์ฒด(o) ๋๋ Collection(c)์ ๊ฐ์ฒด๋ค์ Collection์ ์ถ๊ฐํ๋ค.
๐ ๊ฒ์
โ๏ธ boolean contains(Object o) / boolean containsAll(Collection c)
- ์ง์ ๋ ๊ฐ์ฒด(o) ๋๋ Collection(c)์ ๊ฐ์ฒด๋ค์ Collection์ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ค.
โ๏ธ boolean isEmpty()
- Collection์ด ๋น์ด์๋์ง ํ์ธํ๋ค.
โ๏ธ lterator iterator()
- Collection์ lterator๋ฅผ ์ป์ด์ ๋ฐํํ๋ค.
๐ ์ญ์
โ๏ธ void clear()
- Collection์ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ค.
โ๏ธ boolean remove / removeAll()
- ์ง์ ๋ Collection์ ํฌํจ๋ ๊ฐ์ฒด๋ค์ ์ญ์ ํ๋ค.
โ๏ธ boolen retainAll(C)
- ์ง์ ๋ Collection์ ํฌํจ๋ ๊ฐ์ฒด๋ง์ ๋จ๊ธฐ๊ณ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ Collection์์ ์ญ์ ํ๋ค.
- ์ด ์์
์ผ๋ก ์ธํด Collection์ ๋ณํ๊ฐ ์์ผ๋ฉด true๋ฅผ ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํํ๋ค.
References
: https://cafe.naver.com/javachobostudy
: https://techvidvan.com/tutorials/java-collection-framework/