๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+66] ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ8 (Queue, Stack, Deque, Map<K, V> ์ธํ„ฐํŽ˜์ด์Šค)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 12. 23.

 

๊ตญ๋น„์ง€์› D+66

- ์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ8 -

 


 

Queue

- FIFO : First In First Out
- ์ธํ„ฐํŽ˜์ด์Šค๋กœ Queue๋ฅผ ์šด์˜ํ•˜๋Š” ์—ฐ์‚ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
- List๊ตฌ์กฐ๋‚˜ ArrayDeque๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

Queue<String> queue = new LinkedList<>(); // Queue์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ LinkedList

 

• ์ƒํƒœ

- normal : ํ๊ฐ€ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
- overflow : ํ๊ฐ€ ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€ํ•œ full ์ƒํƒœ
- underflow : ํ๊ฐ€ ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ•œ empty ์ƒํƒœ

 

• ๋ฉ”์†Œ๋“œ

์˜ˆ์™ธ๋ฐœ์ƒ : ์˜ˆ์™ธ ๋ฐœ์ƒ

- add() : ์ถ”๊ฐ€
- remove() : ์‚ญ์ œ
- element() : ๋‹ค์Œ์— ์‚ญ์ œ๋  ๊ฐ’ ํ™•์ธ

 

์˜ˆ์™ธ ๋ฏธ๋ฐœ์ƒ : ์˜ˆ์™ธ ๋ฏธ๋ฐœ์ƒ

- offer() : ์ถ”๊ฐ€
- poll() : ์‚ญ์ œ
- peek() : ๋‹ค์Œ์— ์‚ญ์ œ๋  ๊ฐ’ ํ™•์ธ


Stack

- LIFO : Last In First Out
- Deque ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์Šคํƒ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

์Šคํƒ์€ ์ด์ „์— vector์™€ stack์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ non-thread-safty ๋ฌธ์ œ๋กœ ์ธํ•ด ์š”์ฆ˜์€ ์ž˜ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ , Deque์œผ๋กœ ๋Œ€์‹  ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Stack์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ณ  ๋ฆฌ๋”๋นŒ๋ฆฌํ‹ฐ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ ๋ž˜ํ•‘ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- List๊ตฌ์กฐ๋‚˜ ArrayDeque๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

Deque<String> deq= new LinkedList<>(); // Deque์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ LinkedList

 

• ์ƒํƒœ

- normal : ์Šคํƒ์ด ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
- overflow : ์Šคํƒ์ด ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€ํ•œ full ์ƒํƒœ
- underflow : ์Šคํƒ์ด ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ•œ empty ์ƒํƒœ


Deque

- ํ์™€ ์Šคํƒ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ข…ํ•ฉ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค ์ด๋‹ค.

• Deque์˜ ์—ฐ์‚ฐ

์˜ˆ์™ธ๊ฐ€ ์žˆ์Œ

- addFirst() : ๋„ฃ๊ธฐ
- removeFirst() : ๋นผ๊ธฐ
- getFirst() : ํ™•์ธํ•˜๊ธฐ

- addLast() : ๋’ค๋กœ ๋„ฃ๊ธฐ
- removeLast() : ๋’ค์—์„œ ๋นผ๊ธฐ
- getLast() : ๋’ค์—์„œ ํ™•์ธํ•˜๊ธฐ

 

์˜ˆ์™ธ๊ฐ€ ์—†์Œ

- offerFirst() : ๋„ฃ๊ธฐ
- pollFirst() : ๋นผ๊ธฐ
- peekFirst() : ํ™•์ธํ•˜๊ธฐ

- offerLast() : ๋’ค๋กœ ๋„ฃ๊ธฐ
- pollLast() : ๋’ค์—์„œ ๋นผ๊ธฐ
- peekLast() : ๋’ค์—์„œ ํ™•์ธํ•˜๊ธฐ


Map<K, V> ์ธํ„ฐํŽ˜์ด์Šค

- key-value ๊ตฌ์กฐ๋กœ๋œ Data๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ JAVA Collection ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค.
- ์ปฌ๋ ‰์…˜๋“ค ์ค‘์—์„œ ๋…๋ฆฝ์ ์ธ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต์ž(iterator)๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š๋Š”๋‹ค.

 

ํŠน์ง•

- key๊ฐ€ ๋…๋ฆฝ์ ์ด๋‹ค.

- value๊ฐ’์€ ๋™์ผํ•œ ๊ฐ’์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

- key์™€ value๋Š” 1:1 ๋Œ€์‘์ด๋‹ค.

 

• Map์˜ ์ข…๋ฅ˜

Map<K, V>

- K: key, ๋ฐ์ดํ„ฐ ์‹๋ณ„์ž

- V: value, ์‹ค์ œ ๋ฐ์ดํ„ฐ

- ์ฆ‰ Key-Value์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค

- iterable์„ ์ƒ์†ํ•˜์ง€ ์•Š์Œ

 

HashMap<K, V>

- Hash์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜์˜ ๋ถ„๋ฅ˜๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ Map ๊ตฌ์กฐ

 

TreeMap<K, V>

- ์ •๋ ฌ์ œ๊ณต

- Tree๊ตฌ์กฐ Map

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€