โš™๏ธ ArrayDeque

kkmdevelยท2024๋…„ 9์›” 27์ผ

๐Ÿ“‹ ArrayDeque

ArrayDeque๋Š” ์ž๋ฐ”์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ,
๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๋ชฉ์ ์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ € ํ(Queue)์™€ ์Šคํƒ(Stack)์˜ ๊ฐœ๋…์„ ์•Œ์•„๋ณด์ž.


๐Ÿ“– ํ(Queue)์™€ ์Šคํƒ(Stack) ๊ธฐ๋ณธ ๊ฐœ๋…

  • ํ(Queue): FIFO(First In, First Out), ์ฆ‰ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ
    ์ผ์ƒ์ ์œผ๋กœ ์ค„์„ ์„œ์„œ ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.

    ์ฃผ์š” ๋ฉ”์†Œ๋“œ: offer()(์‚ฝ์ž…), poll()(์‚ญ์ œ ๋ฐ ๋ฐ˜ํ™˜), peek()(๋งจ ์•ž ์š”์†Œ ํ™•์ธ)

  • ์Šคํƒ(Stack): LIFO(Last In, First Out), ์ฆ‰ ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ
    ์ฑ…์„ ์Œ“์•„๋‘๊ณ , ๋งจ ์œ„์˜ ์ฑ…๋ถ€ํ„ฐ ๊บผ๋‚ด๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

    ์ฃผ์š” ๋ฉ”์†Œ๋“œ: push()(์‚ฝ์ž…), pop()(์‚ญ์ œ ๋ฐ ๋ฐ˜ํ™˜), peek()(๋งจ ์œ„ ์š”์†Œ ํ™•์ธ)


๐Ÿ“– ArrayDeque

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 ์Šคํƒ ํ™œ์šฉ์‹œ

  • ๋’ค์— ์ถ”๊ฐ€ โ‡’ addLast()
  • ๋’ค์—์„œ ์ œ๊ฑฐ โ‡’ removeLast()

2 ํ ํ™œ์šฉ์‹œ

  • ๋’ค์— ์ถ”๊ฐ€ โ‡’ addLast()
  • ์•ž์—์„œ ์ œ๊ฑฐ โ‡’ removeFirst()

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๋กœ ์“ธ๋•Œ๋ณด๋‹ค ๋น ๋ฅด๋‹ค. ์•ˆ์“ธ ์ด์œ ๊ฐ€ ์—†๋‹ค!

profile
25/08/12

0๊ฐœ์˜ ๋Œ“๊ธ€