๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

230102 ๊ณต๋ถ€์ผ์ง€ - ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณธ๋ฌธ

TIL

230102 ๊ณต๋ถ€์ผ์ง€ - ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

sehaan 2023. 1. 2. 13:15

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ

- ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฐ์ฒด๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ์ถ”๊ฐ€,์‚ญ์ œ,๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค , ํด๋ž˜์Šค

- ๋Œ€ํ‘œ์ ์œผ๋กœ List, Map , Set ์ด ์žˆ๋‹ค.

 

* List ์™€ Map์€ Collection ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ƒ์† , Map ์€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์ด ์ด ๋‘˜๊ณผ๋Š” ๋‹ค๋ฅป๋‹ค.

 

๋ถ„๋ฅ˜ ํŠน์ง•
Collection List - ์ˆœ์„œ ์œ ์ง€
- ์ค‘๋ณต ๊ฐ€๋Šฅ
Set - ์ˆœ์„œ x
- ์ค‘๋ณต x
Map -ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ์—”ํŠธ๋ฆฌ ์ €์žฅ
- ํ‚ค๋Š” ์ค‘๋ณต ์ €์žฅ x

List ์ปฌ๋ ‰์…˜

- ๊ฐ์ฒด๋ฅผ ์ธ๋ฑ์Šค๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

- ArrayList , Vector , LinkedList ๋“ฑ์ด ์‚ฌ์šฉ๋œ๋‹ค.

- ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์ถ”๊ฐ€ , ๊ฐ์ฒด ๊ฒ€์ƒ‰ , ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ex) add(), contatains() , clear()

 

ArrayList 

- ์ผ๋ฐ˜ ๋ฐฐ์—ด์€ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด ์ฃผ์–ด์•ผํ•˜์ง€๋งŒ , ArrayList๋Š” ์ œํ•œ์—†์ด ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๊ฐ์ฒด์˜ ๋ฒˆ์ง€๋ฅผ ์ €์žฅํ•œ๋‹ค. (๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ ๋™์ผํ•œ ๋ฒˆ์ง€๊ฐ€ ์ €์žฅ๋œ๋‹ค!!)

- null ๋„ ์ €์žฅ๊ฐ€๋Šฅ

- ํŠน์ • ์ธ๋ฑ์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋ชจ๋‘ ์•ž์œผ๋กœ 1์”ฉ ๋‹น๊ฒจ์ง„๋‹ค.

- ์„ ์–ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

List<E> list = new ArrayList<E>(); // E์— ์ง€์ •๋œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ ์ €์žฅ

List<E> list = new ArrayList<>(); // E์— ์ง€์ •๋œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ ์ €์žฅ

List list = new ArratList(); // ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅ

- ์‚ฝ์ž… ์‚ญ์ œ์‹œ ์ž๋ฃŒ ์ „์ฒด๊ฐ€ ์ด๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นˆ๋ฒˆํ•œ ์ˆ˜์ •์ด ๋ฐœ์ƒํ•˜๋Š” ๊ณณ์—์„œ๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค, (LinkedList ์‚ฌ์šฉ)

 

Vector 

- ArrayList์™€ ๋™์ผํ•œ ๋‚ด๋ถ€๊ตฌ์กฐ์ด์ง€๋งŒ ๋™๊ธฐํ™”๋œ ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. -> ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰ ๋ถˆ๊ฐ€ !!

- ์„ ์–ธ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

List<E> list = new Vector<E>(); // E์— ์ง€์ •๋œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ ์ €์žฅ

List<E> list = new Vector<>(); // E์— ์ง€์ •๋œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ ์ €์žฅ

List list = new Vector(); // ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ์ฒด ์ €์žฅ

 

LinkedList

- ArrayList์™€ ๋‹ฌ๋ฆฌ LinkedList๋Š” ์ธ์ ‘๊ฐ์ฒด๋ฅผ ์ฒด์ธ์ฒ˜๋Ÿผ ์—ฐ๊ฒฐํ•ด์„œ ๊ด€๋ฆฌ 

- ๋”ฐ๋ผ์„œ ๊ฐ์ฒด ์‚ญ์ œ์™€ ์‚ฝ์ž…์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ์—์„œ ์šฉ์ดํ•˜๋‹ค.

List<E> list = new LinkedList<E>(); // E์— ์ง€์ •๋œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ ์ €์žฅ
List<E> list = new LinkedList<>(); // E์— ์ง€์ •๋œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋งŒ ์ €์žฅ
List list = new LinkedList(); // ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ €์žฅ

Set ์ปฌ๋ ‰์…˜

- ์ €์žฅ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค !

- ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๋‹ค

 

HashSet 

- ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.

- ๊ฐ์ฒด๋ฅผ ์ค‘๋ณต ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. 

   ๋งŒ์•ฝ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ผ๋„ hash ์ฝ”๋“œ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ™๊ณ  equals ๋ฉ”์†Œ๋“œ๊ฐ€ true๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋™์ผํ•œ ๊ฐ์ฒดํ•˜๊ณ  ํŒ๋‹จํ•˜๊ณ  ์ค‘๋ณต ์ €์žฅํ•˜       ์ง€ ์•Š๋Š”๋‹ค.(๋ฉ”์†Œ๋“œ ์žฌ์ •์˜๋ฅผ ํ†ตํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค)

 

Set ์ปฌ๋ ‰์…˜์€ ์ธ๋ฑ์Šค๊ฐ€ ์—†๊ธฐ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ํ•œ๊ฐœ์”ฉ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ€์ ธ์™€์•ผํ•œ๋‹ค.

1. for๋ฌธ์„ ํ†ตํ•ด ๊ฐ€์ ธ์˜ค๊ธฐ

2. iterator() ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ 

 

iterator() ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

- hasnext() : ๊ฐ€์ ธ์˜ฌ ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ์ง€ ์•Œ๋ ค์ค€๋‹ค.

- next()  : ์ปฌ๋ ‰์…˜์—์„œ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

- remove() : next๋กœ ๊ฐ€์ ธ์˜จ ๊ฐ์ฒด๋ฅผ set ์ปฌ๋ ‰์…˜์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

 

iterator ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Iterator<E> iterator = set.iterator();

 

Map ์ปฌ๋ ‰์…˜

- Map ์ปฌ๋ ‰์…˜์€ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ์—”ํŠธ๋ฆฌ๋ฅผ ์ €์žฅ

- ํ‚ค๋Š” ์ค‘๋ณต ์ €์žฅํ•  ์ˆ˜ ์—†์ง€๋งŒ ๊ฐ’์€ ์ค‘๋ณต์ €์žฅ ๊ฐ€๋Šฅ

- ๋งŒ์•ฝ ๋™์ผํ•œ ํ‚ค๊ฐ€ ์ €์žฅ๋˜๋ฉด ๊ธฐ์กด ํ‚ค๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.

- ํ‚ค๋ฅผ ๋งค๊ฐœ๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ๋งŽ๋‹ค.

ex) put(K key , V value) : ์ฃผ์–ด์ง„ ํ‚ค์™€ ๊ฐ’์„ ์ถ”๊ฐ€ , ์ €์žฅ์ด ๋˜๋ฉด ๊ฐ’์„ ๋ฆฌํ„ด

      boolean  containsKey(Object key) : ์ฃผ์–ด์ง„ ํ‚ค๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€

 

HashMap 

- Set์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค . (ํ‚ค๊ฐ’์— ํ•œํ•ด์„œ๋งŒ)

- hashcode ์˜ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ™๊ณ  equals ๊ฐ€ true๋ฅผ ๋ฆฌํ„ดํ•  ๊ฒฝ์šฐ ์ค‘๋ณต์ €์žฅ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

- ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Map<K,V> map = new HashMap<K,V>();
Map<K,V> map = new HashMap<>();
Map map = new HashMap(); // ๋ชจ๋“  ํƒ€์ž…์˜ ํ‚ค์™€ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฑฐ์˜ ์•ˆ์“ด๋‹ค.

 

HashTable

- HashMap๊ณผ ๋‹ค๋ฅธ ์ ์€ ๋™๊ธฐํ™” ๋œ ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

  ๋”ฐ๋ผ์„œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— HashTable๋ฉ”์†Œ๋“œ๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

- ์„ ์–ธ์€ HashMap ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

 

 

ArrayList VS LinkedList

 

๊ฐ™์€ Set ์ปฌ๋ ‰์…˜์ด์ง€๋งŒ ์ด ๋‘˜์€ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ ?

 

 

1. ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅด๋‹ค.

    - ArrayList ๋Š” AbstractList(๋ฐฐ์—ด ํด๋ž˜์Šค)๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์ง€๋งŒ LinkedList๋Š” Abstarct Sequential List(์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ํด๋ž˜์Šค)        ๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๋Š”๋‹ค.

 

2. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

     - ArrayList๋Š” ์ญ‰ ๋Š˜์–ด์ง„ ๋ฐฐ์—ด์˜ ํ˜•์‹์„ ์ทจํ•˜๊ณ  ์žˆ์ง€๋งŒ , Linked List๋Š” ์„œ๋กœ ์ž๋ฃŒ์˜ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์ ธ ์žˆ๋‹ค.

     - ์ด๋•Œ๋ฌธ์— Linked List๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… , ์‚ญ์ œ ์‹œ์— ๋ช‡๊ฐœ์˜ ์ฐธ์กฐ์ž๋งŒ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด ๋˜๋ฏ€๋กœ ๋น ๋ฅด๊ฒŒ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ์žฅ๋‹จ์ 

    - Linked List๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… ์‚ญ์ œ์— ์šฉ์ดํ•˜์ง€๋งŒ Sequantial access ๋งŒ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€        ๋Šฅํ•˜๋‹ค.

      ์ฐธ์กฐ์ž๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค

      ์‚ฌ์‹ค ์ˆœ์ฐจ ์ ‘๊ทผ๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜์–ด์ ธ ์žˆ๋Š” ArrayList๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.

    - Array List๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ์ง€๋งŒ random access๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ํƒ์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ ์ž๋ฃŒ

https://www.nextree.co.kr/p6506/