Collection - List, Set
Last updated
Last updated
์๋ฐ๋ ์๋ฃ๊ตฌ์กฐ(Data Structure)๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ฒด๋ค์ ํจ์จ์ ์ผ๋ก ์ถ๊ฐ, ์ญ์ , ๊ฒ์ํ ์ ์๋๋ก java.util
ํจํค์ง์ ์ปฌ๋์
๊ณผ ๊ด๋ จ๋ ์ธํฐํ์ด์ค์ ํด๋์ค๋ค์ด ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด๋ค์ ์ด์นญํด์ Collection Framework๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Collection ์ ๊ฐ์ฒด๋ฅผ ์์งํด์ ์ ์ฅํ๋ ์ญํ ์ ํ๋ฉฐ, Framework ๋ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ์ ํด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํ๋ค.
์ธํฐํ์ด์ค ๋ถ๋ฅ | ํน์ง | ๊ตฌํ ํด๋์ค |
Collection(List) | - ์์๋ฅผ ์ ์งํ๊ณ ์ ์ฅ - ์ค๋ณต ์ ์ฅ ๊ฐ๋ฅ | ArrayList Vector LinkedList |
Collection(Set) | - ์์๋ฅผ ์ ์งํ์ง์๊ณ ์ ์ฅ - ์ค๋ณต ์ ์ฅ ์ ๋จ | HashSet TreeSet |
Map | - ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅ - ํค๋ ์ค๋ณต ์ ์ฅ ์ ๋จ | HashMap Hashtable TreeMap Properties |
List๋ ๊ฐ์ฒด๋ฅผ ์ผ๋ ฌ๋ก ๋์ด๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฉด ์๋ ์ธ๋ฑ์ค๊ฐ ๋ถ์ฌ๋๊ณ ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ฒ์, ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. List Collection ์ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด ๋ฒ์ง๋ฅผ ์ฐธ์กฐํ๋ค. ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ค๋ณต ์ ์ฅํ ์๋ ์๋ค.
([์๋ฃ๊ตฌ์กฐ List]์ ์์ธํ ์ค๋ช ์ด ์๋ค.)
List ์ธํฐํ์ด์ค๋ ์ ๋ค๋ฆญ ํ์ ์ด๋ค.
๊ธฐ๋ฅ | ๋ฉ์๋ | ์ค๋ช |
๊ฐ์ฒด ์ถ๊ฐ | boolean add(E e) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ๋งจ ๋์ ์ถ๊ฐ |
void add(int index, E element) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ๊ฐ์ฒด ์ถ๊ฐ | |
set(int index, E element) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์ด์ง ๊ฐ์ฒด๋ก ๋ณ๊ฒฝ | |
๊ฐ์ฒด ๊ฒ์ | boolean contains(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ด ์๋์ง ์ฌ๋ถ |
E get(int index) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด | |
isEmpty() | ์ปฌ๋ ์ ์ด ๋น์ด์๋์ง ์กฐ์ฌ | |
int size() | ์ ์ฅ๋์ด ์๋ ์ ์ฒด ๊ฐ์ฒด ์๋ฅผ ๋ฆฌํด | |
๊ฐ์ฒด ์ญ์ | void clear() | ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด ์ญ์ |
E remove(int index) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ฒด ์ญ์ | |
boolean remove(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ญ์ |
ArrayList๋ List ์ธํฐํ์ด์ค์ ๊ตฌํ ํด๋์ค๋ก, ArrayList์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๋ฉด ๊ฐ์ฒด๊ฐ ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌ๋๋ค. ๋ฐฐ์ด์ ์์ฑํ ๋ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๊ณ ์ฌ์ฉ ์ค์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ArrayList๋ capacity(์ ์ฅ ์ฉ๋)๋ฅผ ์ด๊ณผํ ๊ฐ์ฒด๋ค์ด ๋ค์ด์ค๋ฉด ์๋์ผ๋ก capacity๊ฐ ์ฆ๊ฐํ๋ค.
๊ธฐ๋ณธ ์์ฑ์๋ก ArrayList ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๋ด๋ถ์ 10ใฑ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์๋ ์ด๊ธฐ ์ฉ๋์ ๊ฐ์ง๋ค. ์ ์ฅ๋๋ ๊ฐ์ฒด ์๊ฐ ๋์ด๋๋ฉด ์๋์ผ๋ก ์ฆ๊ฐํ์ง๋ง, ์ฒ์๋ถํฐ ์ฉ๋์ ํฌ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด ์ฉ๋์ ํฌ๊ธฐ๋ฅผ ๋งค๊ฐ๊ฐ์ผ๋ก ๋ฐ๋ ์์ฑ์๋ฅผ ์ด์ฉํ๋ฉด๋๋ค.
ArrayList์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๋ฉด ์ธ๋ฑ์ค 0๋ถํฐ ์ฐจ๋ก๋๋ก ์ ์ฅ๋๋ค. ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ฐ๋ก ๋ค ์ธ๋ฑ์ค๋ถํฐ ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ๋ชจ๋ ์์ผ๋ก 1์ฉ ๋น๊ฒจ์ง๋ค. ๋ํ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ํด๋น ์ธ๋ฑ์ค๋ถํฐ 1์ฉ ๋ฐ๋ ค๋๋ค. ๋ฐ๋ผ์ ๋น๋ฒํ ๊ฐ์ฒด ์ญ์ ์ ์ฝ์ ์ ์ผ์ด๋๋ ๊ณณ์์๋ ArrayList๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐ๋์งํ์ง ์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ๋ LinkedList๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
ArrayList๋ ๋งจ ๋ง์ง๋ง์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
ArrayList๋ฅผ ์์ฑํ๊ณ ๋ฐํ์ ์ ํ์์ ์ํด ๊ฐ์ฒด๋ค์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์ง๋ง, ๊ณ ์ ๋ ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑ๋ List๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ์๋ ArrayList.asList(T...a)
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐํธํ๋ค.
T ํ์ ํ๋ผ๋ฏธํฐ์ ๋ง๊ฒ asList()์ ๋งค๊ฐ๊ฐ์ ์์ฐจ์ ์ผ๋ก ์ ๋ ฅํ๊ฑฐ๋, T[] ๋ฐฐ์ด์ ๋งค๊ฐ๊ฐ์ผ๋ก ์ฃผ๋ฉด๋๋ค.
Vector๋ ArrayList์ ๋์ผํ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
ArrayList์ ๋ค๋ฅธ ์ ์ Vector๋ ๋๊ธฐํ๋(synchronized) ๋ฉ์๋๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉํฐ ์ค๋ ๋๊ฐ ๋์์ ์ด ๋ฉ์๋๋ค์ ์คํํ ์ ์๊ณ , ํ๋์ ์ค๋ ๋๊ฐ ์คํ์ ์๋ฃํด์ผ๋ง ๋ค๋ฅธ ์ค๋ ๋๋ฅผ ์คํํ ์ ์๋ค. ๊ทธ๋์ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ๊ฒ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐ, ์ญ์ ํ ์ ์๋ค.
ArrayList์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง๋ง ๋ด๋ถ ๊ตฌ์กฐ๋ ์์ ๋ค๋ฅด๋ค. ArrayList๋ ๋ด๋ถ ๋ฐฐ์ด์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํด์ ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌํ์ง๋ง, LinkedList๋ ์ธ์ ์ฐธ์กฐ๋ฅผ ๋งํฌํด์ ์ฒด์ธ์ฒ๋ผ ๊ด๋ฆฌํ๋ค.
LinkedList์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ฉด ์๋ค link๋ง ๋ณ๊ฒฝ๋๊ณ ๋๋จธ์ง link๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค. ๊ฐ์ฒด๋ฅผ ์ฝ์ ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋น๋ฒํ ๊ฐ์ฒด ์ญ์ ์ ์ฝ์ ์ด ์ผ์ด๋๋ ๊ณณ์์๋ LinkedList๊ฐ ์ข์ ์ฑ๋ฅ์ ๋ฐํํ๋ค.
( Linked List ์๋ฃ๊ตฌ์กฐ ์ดํด๋ณด๊ธฐ )
๊ตฌ๋ถ | ์์ฐจ์ ์ผ๋ก ์ถ๊ฐ/์ญ์ | ์ค๊ฐ์ ์ถ๊ฐ/์ญ์ | ๊ฒ์ |
ArrayLIst | ๋น ๋ฅด๋ค | ๋๋ฆฌ๋ค | ๋น ๋ฅด๋ค |
LinkedList | ๋๋ฆฌ๋ค | ๋น ๋ฅด๋ค | ๋๋ฆฌ๋ค |
Collection ํ๋ ์์ํฌ์ ๋๋ถ๋ถ์ ํด๋์ค(ArrayList)๋ Single Thread ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณ๋์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ์ง์๋ค. Single Threadํ๊ฒฝ์์ Multi Threadํ๊ฒฝ์ผ๋ก ์ ๋ฌํ ๊ฒฝ์ฐ์ ๋๋นํด ๋น๋๊ธฐํ๋ ๋ฉ์๋๋ฅผ ๋๊ธฐํ๋ ๋ฉ์๋๋ก Wrappingํ๋ synchronizedList()๋ฉ์๋๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.
๋ฆฌํดํ์ | ๋ฉ์๋ | ์ค๋ช |
List | synchronizedList(List list) | List๋ฅผ ๋๊ธฐํ๋ List๋ก ๋ฆฌํด |
List Collection์ ์ ์ฅ์์๋ฅผ ์ ์งํ์ง๋ง, Set Collection์ ์ ์ฅ ์์๊ฐ ์ ์ง๋์ง ์๋๋ค. ๋ํ ๊ฐ์ฒด๋ฅผ ์ค๋ณตํด์ ์ ์ฅํ ์ ์๊ณ , ํ๋์ null๋ง ์ ์ฅํ ์ ์๋ค. ์ฆ, ์ํ์ ์งํฉ์ ๋น์ ํ ์ ์๋ค.
๊ธฐ๋ฅ | ๋ฉ์๋ | ์ค๋ช |
๊ฐ์ฒด ์ถ๊ฐ | boolean add(E e) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ ์ฅ, ๊ฐ์ฒด๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋๋ฉด true, ์ค๋ณต์ด๋ฉด false return |
๊ฐ์ฒด ๊ฒ์ | boolean contains(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ด ์๋์ง ์ฌ๋ถ |
isEmpty() | ์ปฌ๋ ์ ์ด ๋น์ด์๋์ง ์กฐ์ฌ | |
| ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ํ๋ฒ์ฉ ๊ฐ์ ธ์ค๋ ๋ฐ๋ณต์ return | |
int size() | ์ ์ฅ๋์ด ์๋ ์ ์ฒด ๊ฐ์ฒด ์ ๋ฆฌํด | |
๊ฐ์ฒด ์ญ์ | void clear() | ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด ์ญ์ |
boolean remove(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ญ์ |
Set Collection์ Generic Type์ผ๋ก ๊ตฌ์ฒด์ ์ธ ํ์ ์ ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๊ฒฐ์ ๋๋ค.
Set Collection์ ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ฒ์ํด์ ๊ฐ์ ธ์ค๋ ๋ฉ์๋๊ฐ ์๋ค. ๋์ , ์ ์ฒด ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ํ๋ฒ ์ฉ ๋ฐ๋ณตํด์ ๊ฐ์ ธ์ค๋ ๋ฐ๋ณต์(Iterator)๋ฅผ ์ ๊ณตํ๋ค.
๋ฆฌํด ํ์ | ๋ฉ์๋๋ช | ์ค๋ช |
boolean | hasNext() | ๊ฐ์ ธ์ฌ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด true, ์์ผ๋ฉด false return |
E | next() | ์ปฌ๋ ์ ์์ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค. |
void | remove() | Set ์ปฌ๋ ์ ์์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐ |
HashSet์ Set์ธํฐํ์ด์ค์ ๊ตฌํ ํด๋์ค์ด๋ค.
HashSet์ ๊ฐ์ฒด๋ค์ ์์ ์์ด ์ ์ฅํ๊ณ ๋์ผํ ๊ฐ์ฒด๋ ์ค๋ณต ์ ์ฅํ์ง ์๋๋ค. ์ฌ๊ธฐ์ ๋์ผํ ๊ฐ์ฒด๋ ๊ผญ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๋ปํ์ง ์๋๋ค. HashSet์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ๋จผ์ ๊ฐ์ฒด์ hashCode() ๋ฉ์๋๋ฅผ ํธ์ถํด ํด์์ฝ๋๋ฅผ ์ป์ด๋ธ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ์ ์ฅ๋ ๊ฐ์ฒด๋ค์ hashcode์ ๋น๊ตํ๋ค. ๋์ผํ hashcode๊ฐ ์๋ค๋ฉด ๋ค์ equals() ๋ฉ์๋๋ก ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํด true๊ฐ ๋์ค๋ฉด ๋์ผํ ๊ฐ์ฒด๋ก ํ๋ํค ์ ์ฅํ์ง ์๋๋ค.
๋ฌธ์์ด์ HashSet์ ์ ์ฅํ ๊ฒฝ์ฐ, ๊ฐ์ ๋ฌธ์์ด์ ๊ฐ๋ String ๊ฐ์ฒด๋ ๋๋ฑํ ๊ฐ์ฒด, ๋ค๋ฅธ ๋ฌธ์์ด์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ๊ฐ์ฃผ๋๋ค. ์ด๋ String ํด๋์ค๊ฐ hashCode()์ equals() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
Collection ํ๋ ์์ํฌ์ ๋๋ถ๋ถ์ ํด๋์ค(HashSet)๋ Single Thread ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋๋ก ์ค๊ณ๋์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ์ง์๋ค. Single Threadํ๊ฒฝ์์ Multi Threadํ๊ฒฝ์ผ๋ก ์ ๋ฌํ ๊ฒฝ์ฐ์ ๋๋นํด ๋น๋๊ธฐํ๋ ๋ฉ์๋๋ฅผ ๋๊ธฐํ๋ ๋ฉ์๋๋ก Wrappingํ๋ synchronizedSet()๋ฉ์๋๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.
๋ฆฌํดํ์ | ๋ฉ์๋ | ์ค๋ช |
Set | synchronizedSet(Set s) | Set๋ฅผ ๋๊ธฐํ๋ Set๋ก ๋ฆฌํด |