๐ป
Java ํ๋ก๊ทธ๋๋ฐ - ์ปฌ๋ ์ ํ๋ ์์ํฌ(List, Set, Map) ๋ณธ๋ฌธ
Java ํ๋ก๊ทธ๋๋ฐ - ์ปฌ๋ ์ ํ๋ ์์ํฌ(List, Set, Map)
๋ํจ๋ 2020. 5. 14. 11:31์ปฌ๋ ์ ํ๋ ์์ํฌ
: ์ปฌ๋ ์ ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ฒด๋ค์ ํจ์จ์ ์ผ๋ก ์ถ๊ฐ, ์ญ์ , ๊ฒ์ํ ์ ์๋๋ก java.util ํจํค์ง์ ๊ด๋ จ๋ ์ธํฐํ์ด์ค์ ํด๋์ค๋ฅผ ํฌํจ์์ผ ๋์๋ค. ์ด๋ฅผ ์ด์นญํด์ ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Q. ์ปฌ๋ ์
์ด ๋ญ๋?
A. ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ฐํ์ผ๋ก ์ธํฐํ์ด์ค์ ํด๋์ค๋ฅผ ํฌํจ์์ผ ๋์ ๊ฒ์ ๋งํฉ๋๋ค. ์๋ฐ ์ปฌ๋ ์
ํ๋ ์์ํฌ์ ์ฃผ์ ์ธํฐํ์ด์ค๋ก๋ List, Set, Map ์ด ์์ต๋๋ค.
Q. ํ๋ ์์ํฌ๋?
A. ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ์ ํด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค.
* 1) List: ๊ฐ๋ฐ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ๋ค์ด๊ฐ๋ ๋ฐ์ดํฐ์ ์์๋ฅผ ์์ธกํ ์ ์๋ค.
ArrayList, Vector, LinkedList, Stack, Queue ๋ฑ๋ฑ
* 2) Set: ์ ์ฅ์์๊ฐ ์ ์ง๋์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์ค๋ณตํด์ ์ ์ฅํ ์ ์๊ณ , ํ๋์ null๋ง ์ ์ฅํ ์ ์๋ค.
HashSet, TreeSet ๋ฑ๋ฑ
* 3) Map: ์์๋ฅผ ์์ธกํ ์ ์์ง๋ง ํค ๊ฐ์ด ์๋ค.
HashMap, HashTable, TreeMap, Properties ๋ฑ๋ฑ
์ธํฐํ์ด์ค ๋ถ๋ฅ | ํน์ง | ๊ตฌํ ํด๋์ค | |
Collection | List | - ์์๋ฅผ ์ ์งํ๊ณ ์ ์ฅ - ์ค๋ณต ์ ์ฅ ๊ฐ๋ฅ |
ArrayList, Vector, LinkedList |
Set | - ์์๋ฅผ ์ ์งํ์ง ์๊ณ ์ ์ฅ - ์ค๋ณต ์ ์ฅ ์ ๋จ |
HashSet, TreeSet | |
Map | - ํค์ ๊ฐ์ ์์ผ๋ก ์ ์ฅ - ํค๋ ์ค๋ณต ์ ์ฅ ์ ๋จ |
HashMap, Hashtable, TreeMap, Properties |
List ์ปฌ๋ ์
: List ์ปฌ๋ ์ ์ ๊ฐ์ฒด๋ฅผ ์ผ๋ ฌ๋ก ๋์ด๋์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ์ฒด๋ฅผ ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฉด ์๋์ผ๋ก ์ธ๋ฑ์ค๊ฐ ๋ถ์ฌ๋๊ณ ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ฒ์, ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. List์ปฌ๋ ์ ์ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด์ ๋ฒ์ง๋ฅผ ์ฐธ์กฐํ๋ค.
heap | stack | |||
new AA | Ox100 | a | Ox100 | |
new AA | Ox200 | b | Ox200 | |
new AA | Ox300 | c | Ox300 | |
new ArrayList | Ox400 | array | Ox400 | |
[0] (=0๋ฒ์ง) | Ox100 | Ox200(๋ค์ ๋ฒ์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ค=>์ฐ๊ฒฐ๋ฆฌ์คํธ) | ||
[1] (=1๋ฒ์ง) | Ox200 | |||
[2] (=2๋ฒ์ง) | Ox300 |
List ์ปฌ๋ ์ ์๋ ArrayList, Vector, LinkedList ๋ฑ์ด ์๋๋ฐ, ๋ค์์ List ์ปฌ๋ ์ ์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ List ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ค์ด๋ค. ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ๋งค๊ฐ๊ฐ์ผ๋ก ๊ฐ๋ ๋ฉ์๋๊ฐ ๋ง๋ค.
๋ฉ์๋ | ๊ธฐ๋ฅ | ์ค๋ช |
boolean add(E e) | ๊ฐ์ฒด ์ถ๊ฐ | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ๋งจ ๋์ ์ถ๊ฐ |
void add(int index, E element) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐ | |
E set(int index, E element) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ฃผ์ด์ง ๊ฐ์ฒด๋ก ๋ฐ๊ฟ | |
boolean contains(Object o) | ๊ฐ์ฒด ๊ฒ์ | ์ฃผ์ด์ง ๊ฐ์ฒด๊ฐ ์ ์ฅ๋์ด ์๋์ง ์ฌ๋ถ |
E get(int index) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด | |
boolean isEmpty() | ์ปฌ๋ ์ ์ด ๋น์ด ์๋์ง ์กฐ์ฌ | |
int size() | ์ ์ฅ๋์ด ์๋ ์ ์ฒด ๊ฐ์ฒด ์๋ฅผ ๋ฆฌํด | |
void clear() | ๊ฐ์ฒด ์ญ์ | ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ |
E remove(int index) | ์ฃผ์ด์ง ์ธ๋ฑ์ค์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ์ญ์ | |
boolean remove(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒด๋ฅผ ์ญ์ |
์์ชฝ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅ -> C๋ก ๋ฐ์ง๋ฉด ๋ค์คํฌ์ธํฐ
์ผ์ชฝ,์ค๋ฅธ์ชฝ ์ ๊ทผ -> ๋ค์ค๋งํฌ๋๋ฆฌ์คํธ
๋งํฌ๋๋ฆฌ์คํธ, ๋ค์ค๋งํฌ๋๋ฆฌ์คํธ
ArrayList
: List ์ธํฐํ์ด์ค์ ๊ตฌํ ํด๋์ค๋ก, ์ผ๋ฐ๋ฐฐ์ด๊ณผ ArrayList๋ ์ธ๋ฑ์ค๋ก ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ค๋ ์ ์์๋ ์ ์ฌํ์ง๋ง, ํฐ ์ฐจ์ด์ ์ ๊ฐ์ง๊ณ ์๋ค. ๋ฐฐ์ด์ ์์ฑํ ๋ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋๊ณ ์ฌ์ฉ ์ค์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ArrayList๋ ์ ์ฅ์ฉ๋(capacity)์ ์ด๊ณผํ ๊ฐ์ฒด๋ค์ด ๋ค์ด์ค๋ฉด ์๋์ ์ผ๋ก ์ ์ฅ ์ฉ๋์ด ๋์ด๋๋ค.
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/ArrayList.html
ArrayList ๋ SELECTํ ๋ ๋ง์ด ์ฌ์ฉํ ์ ๋ฐ์ ์๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ (1)๊ธฐ๋ณธ์๋ฃํ(0:์ฑ๊ณต 1:์คํจ), (2)ํ ํ์ ๊ฐ์ ธ์ค๋ ๊ฒ, (3)2๊ฐ ์ด์์ ๋ฐ์ดํฐ(๋ ์ฝ๋ ๋จ์)๋ฅผ ๊ฐ์ ธ ์ค๋ ๊ฒ. ์ ์ธ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค.
ArrayList๋ ๊ฐ์ฒด๋ฅผ ๋ด์์ค๋ค. ๋ ์ฝ๋ ๋จ์๋ก ์ ์ฅํ๋ ค๋ฉด ArrayList๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐฐ์ด์ ๋จ์ ์ถ๊ฐ ์ญ์ ์ฝ์ ์ด ์๋์ ๊ธฐ๋ณธ ์๋ฃํ๋ง ๋ด์ ์ ์๋ค.
Vector
: ArrayList์ ๋์ผํ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ๋ค๋ฅธ ์ ์ Vector๋ ๋๊ธฐํ๋(synchronized) ๋ฉ์๋๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฉํฐ์ค๋ ๋๊ฐ ๋์์ ์ด ๋ฉ์๋๋ค์ ์คํํ ์ ์๊ณ , ํ๋์ ์ค๋ ๋๊ฐ ์คํ์ ์๋ฃํด์ผ๋ง ๋ค๋ฅธ ์ค๋ ๋๋ฅผ ์คํํ ์ ์๋ค. ๊ทธ๋์ ๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ๊ฒ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐ, ์ญ์ ํ ์ ์๋ค. ์ด๊ฒ์ ์ค๋ ๋๊ฐ ์์ (Thread Safe)ํ๋ค๋ผ๊ณ ๋งํ๋ค.
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Vector.html
Q. Vector์ ArrayList์ ์ฐจ์ด?
A.
Stack
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Stack.html
Queue
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Queue.html
LinkedList
: List๊ตฌํ ํด๋์ค์ด๋ฏ๋ก ArrayList์ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋๊ฐ์ง๋ง ๋ด๋ถ ๊ตฌ์กฐ๋ ์์ ํ ๋ค๋ฅด๋ค. ArrayList๋ ๋ด๋ถ ๋ฐฐ์ด์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํด์ ์ธ๋ฑ์ค๋ก ๊ด๋ฆฌํ์ง๋ง, LinkedList๋ ์ธ์ ์ฐธ์กฐ๋ฅผ ๋งํฌํด์ ์ฒด์ธ์ฒ๋ผ ๊ด๋ฆฌํ๋ค. ๋งํฌ๋๋ฆฌ์คํธ์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ฉด ์๋ค ๋งํฌ๋ง ๋ณ๊ฒฝ๋๊ณ ๋๋จธ์ง ๋งํฌ๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค. ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ฝ์ ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ArrayList๋ ์ค๊ฐ ์ธ๋ฑ์ค์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ฉด ๋ค์ ๊ฐ์ฒด๋ ์ธ๋ฑ์ค๊ฐ 1์ฉ ์์ผ๋ก ๋น๊ฒจ์ง๋ค๊ณ ํ๋ค.
๋ฐ๋ผ์, ๋น๋ฒํ ๊ฐ์ฒด ์ญ์ ์ ์ฝ์ ์ด ์ผ์ด๋๋ ๊ณณ์์๋ ArrayList๋ณด๋ค LinkedList๊ฐ ์ข์ ์ฑ๋ฅ์ ๋ฐํํ๋ค.
Map
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/HashMap.html
ํค๊ฐ์ ์ค๋ธ์ ํธ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค.
๋ฝ์ ์ฌ๋ ์์๋๋ก ๋ฝ์์ค์ง ์๋๋ค. ์์๋๋ก ๋ฝ๊ณ ์ถ์ผ๋ฉด? iterator
Properties
https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Properties.html
ArrayList๋ฅผ iterator๋ก ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๊ทธ๋ฌ๋ ArrayList๋ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ๋ค.
'KITRI > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java ํ๋ก๊ทธ๋๋ฐ - ์์ธ์ฒ๋ฆฌ(Exception) (0) | 2020.05.18 |
---|---|
Java ํ๋ก๊ทธ๋๋ฐ - MVC ํจํด (0) | 2020.05.15 |
Java ํ๋ก๊ทธ๋๋ฐ - [๊ธฐ๋ณธ API ํด๋์ค] Format ํด๋์ค(DecimalFormat, SimpleDateFormat) (0) | 2020.05.14 |
Java ํ๋ก๊ทธ๋๋ฐ - [๊ธฐ๋ณธ API ํด๋์ค] Date ํด๋์ค, Calendar ํด๋์ค (0) | 2020.05.14 |
Java ํ๋ก๊ทธ๋๋ฐ - [๊ธฐ๋ณธ API ํด๋์ค] Math ํด๋์ค (0) | 2020.05.13 |