
ArrayDeque๋ ์๋ฐ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ๋ก,
๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๊ณผ ๋ชฉ์ ์ ๋ฐ๋ผ ์๋ก ๋ค๋ฅธ ๋์์ ์ํํ๋ค.
์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด ๋จผ์ ํ(Queue)์ ์คํ(Stack)์ ๊ฐ๋ ์ ์์๋ณด์.
ํ(Queue): FIFO(First In, First Out), ์ฆ ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ
์ผ์์ ์ผ๋ก ์ค์ ์์ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค.
์ฃผ์ ๋ฉ์๋: offer()(์ฝ์ ), poll()(์ญ์ ๋ฐ ๋ฐํ), peek()(๋งจ ์ ์์ ํ์ธ)
์คํ(Stack): LIFO(Last In, First Out), ์ฆ ๋์ค์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ
์ฑ
์ ์์๋๊ณ , ๋งจ ์์ ์ฑ
๋ถํฐ ๊บผ๋ด๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๋ค.
์ฃผ์ ๋ฉ์๋: push()(์ฝ์ ), pop()(์ญ์ ๋ฐ ๋ฐํ), peek()(๋งจ ์ ์์ ํ์ธ)
ArrayDeque๋ ํ์ ์คํ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ง์ํ๋ ์ด์ค ๋ ํ(Double-Ended Queue)๋ค.
ํ์ฒ๋ผ ์๋ค๋ก ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ์คํ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ ๊ณตํ๊ณ
์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ๋์ ๋ฐฐ์ด๋ก ๊ตฌํ๋์ด ์์ด ํน์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ ํ์๊ฐ ์๋ค.
| ๋ฉ์๋๋ช | ๊ธฐ๋ฅ | ์์ธ |
|---|---|---|
| addFirst() | ์์ ์ถ๊ฐ | |
| offerFirst() | ์์ ์ถ๊ฐ | |
| add() | ๋ค์ ์ถ๊ฐ | addLast()์ ๋์์ ๊ฐ์ผ๋ true ๋ฐํ |
| addLast() | ๋ค์ ์ถ๊ฐ | ์ฉ๋ ์ด๊ณผ์ Exception |
| offerLast() | ๋ค์ ์ถ๊ฐ | ์ฉ๋ ์ด๊ณผ์ false ๋ฆฌํด |
| addAll() | ๋ค์ ์ฌ๋ฌ๊ฐ ์ถ๊ฐ | |
| removeFirst() | ์์์ ์ถ์ถ | remove๋ค์ ๋น์ด์๋ ๊ฒฝ์ฐ Exception |
| pollFirst() | ์์์ ์ถ์ถ | poll๋ค์ ๋น์ด์๋ ๊ฒฝ์ฐ null ๋ฆฌํด |
| remove() | ๋ค์์ ์ถ์ถ | remove(Object)์ ์ํ๋ ํน์ ๋ฐ์ดํฐ ์ญ์ |
| removeLast() | ๋ค์์ ์ถ์ถ | |
| poll() | ๋ค์์ ์ถ์ถ | |
| push() | ์์ ์ถ๊ฐ | ์๊ฐ๊ณผ๋ ๋ฐ๋๋ก ๋์ํ ์ ์์ผ๋ฏ๋ก, |
| pop() | ์์์ ์ถ์ถ | push, pop์ ์ฃผ์ํฉ๋๋ค. |
| getFirst() | ์ฒซ ๋ฐ์ดํฐ ๊ฐ์ ธ์ด | |
| peek() | ์ฒซ ๋ฐ์ดํฐ ๊ฐ์ ธ์ด | |
| peekFirst() | ์ฒซ ๋ฐ์ดํฐ ๊ฐ์ ธ์ด | |
| getLast() | ๋ง์ง๋ง ๋ฐ์ดํฐ ๊ฐ์ ธ์ด | |
| peekLast() | ๋ง์ง๋ง ๋ฐ์ดํฐ ๊ฐ์ ธ์ด | |
| size() | ํฌ๊ธฐ ํ์ธ | |
| contains() | ์์ ํ์ธ | |
| isEmpty() | ๋น์ด์๋์ง ์ฌ๋ถ ํ์ธ | |
| clear() | ์ ์ฒด ๋น์ฐ๊ธฐ | while๋ฌธ 2์ค ๋ธ๋ ์ดํฌ์ ์ ์ฉ |
1 ์คํ ํ์ฉ์
2 ํ ํ์ฉ์
This class is likely to be faster than Stack when used as a stack,
and faster than LinkedList when used as a queue.
๐ก stack ๋ณด๋ค ๋น ๋ฅด๊ณ , LinkedList๋ฅผ Queue๋ก ์ธ๋๋ณด๋ค ๋น ๋ฅด๋ค. ์์ธ ์ด์ ๊ฐ ์๋ค!