๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Algorithm

Deque๊ตฌํ˜„์ฒด LinkedList VS ArrayDeque ๋น„๊ต

by agong์ด 2025. 1. 2.

๐Ÿ’ฌ์„œ๋ก 

java์—์„œ ์ œ๊ณตํ•˜๋Š” java.util.Stack ํด๋ž˜์Šค๋Š” ๋””์ž์ธ์ด ์ž˜๋ชป๋˜์–ด ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์œ ๋ฅผ ์งง๊ฒŒ ์ •๋ฆฌํ•˜์ž๋ฉด ์ž๋ฐ”์˜ Stack ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋กœ Vector๋ฅผ ์ƒ์†๋ฐ›๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

- Synchronized๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ

Vector๋Š” ๋ชจ๋“  ๋ฉ”์„œ๋“œ์— synchronized๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์กฐํšŒ๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋™๊ธฐํ™”๋กœ ์ธํ•ด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Stack์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ ์—ญ์‹œ synchronized๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ๋‚ด๋ถ€์ ์œผ๋กœ Vector๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ด์ค‘์œผ๋กœ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

- ํ›„์ž… ์„ ์ถœ ๊ตฌ์กฐ ์œ„๋ฐ˜

์Šคํƒ์€ ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ตฌ์กฐ์˜ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•˜๋Š” ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Stack์€ Vector๊ฐ€ ์ œ๊ณตํ•˜๋Š” add(int index, E element), removeElementAt(int indx)๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํŠน์ • ์ธ๋ฑ์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ž๋ฐ” ๊ณต์‹ API์—์กฐ์ฐจ ๋” ์•ˆ์ „ํ•˜๊ณ  ์ผ๊ด€๋œ Deque ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ทธ ๊ตฌํ˜„์ฒด๋“ค์„ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ๋ช…์‹œ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. (์ด๋Ÿฌํ•œ Stack ๊ตฌ์กฐ๋Š” ์ž๋ฐ”์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด์„œ ์ƒ์†๊ด€๊ณ„๋ฅผ ๊ณ„์† ์œ ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.) 

์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹ ๋ถ„์€ ๋‹ค์Œ๊ธ€์„ ์ฐธ๊ณ ํ•ด๋ณด์‹œ๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

http:// https://velog.io/@jhl221123/%EC%9E%90%EB%B0%94%EC%9D%98-Stack%EC%9D%80-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EA%B1%B8%EA%B9%8C

์ด๋ฒˆ๊ธ€์—์„œ๋Š” ๊ทธ๋ ‡๋‹ค๋ฉด Stack์„ ํ•„์š”๋กœ ํ• ๋•Œ Deque์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด๋กœ LinkedList์™€ ArrayDeque๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 


 

๐Ÿ“œ์Šคํฌโ—

๊ฒฐ๋ก ์ด ๊ถ๊ธˆํ•˜์‹ ๋ถ„๋“ค์„ ์œ„ํ•ด ๋จผ์ € ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด Stack, Deque๋กœ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ArrayDeque๊ฐ€ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋„ ArrayDeque๊ฐ€ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

 

LinkedList๋ž€?

LinkedList๋Š” ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ด์ „ ๋ฐ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  • ๋™์  ํฌ๊ธฐ: ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค.
  • ์‚ฝ์ž…/์‚ญ์ œ ์„ฑ๋Šฅ: ์–‘ ๋์—์„œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๋ฟ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค(์‹œ๊ฐ„๋ณต์žก๋„: O(1)).
  • ์ ‘๊ทผ ์„ฑ๋Šฅ: ํŠน์ • ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋…ธ๋“œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋А๋ฆฝ๋‹ˆ๋‹ค(์‹œ๊ฐ„๋ณต์žก๋„: O(n)).
  • ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„: ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋‹ค์Œ/์ด์ „ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ถ”๊ฐ€์ ์ธ ์ฐธ์กฐ(ํฌ์ธํ„ฐ)๋ฅผ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋” ๋งŽ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ์ธํ•ด ์ค‘๊ฐ„ ์œ„์น˜์— ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ, ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์œ ๋™์ ์ด๊ณ  ํŠน์ • ์ธ๋ฑ์Šค ์ ‘๊ทผ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


ArrayDeque

ArrayDeque๋Š” ๋™์  ๋ฐฐ์—ด ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ค ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๋ฐฐ์—ดํ•ฉ๋‹ˆ๋‹ค.

ArrayDeque์˜ ์ฃผ์š” ํŠน์ง•

  • ๋™์  ํฌ๊ธฐ: ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํ˜„์žฌ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋‚ด๋ถ€ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋กœ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์ ๊ฒŒ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ ํฌ๊ธฐ๋ฅผ ์ค„์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฝ์ž…/์‚ญ์ œ ์„ฑ๋Šฅ: ์–‘ ๋์—์„œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ ๋น ๋ฆ…๋‹ˆ๋‹ค(์‹œ๊ฐ„๋ณต์žก๋„: ํ‰๊ท  O(1), ํฌ๊ธฐ ์ดˆ๊ณผ ์‹œ O(n)).
  • ๋žœ๋ค ์ ‘๊ทผ ์„ฑ๋Šฅ: ๋ฐฐ์—ด ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์ˆœ์ฐจ์  ์ ‘๊ทผ์ด ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค(์‹œ๊ฐ„๋ณต์žก๋„: O(1)).
  • ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„: ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค(์ถ”๊ฐ€์ ์ธ ์ฐธ์กฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ).

์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์ค‘๊ฐ„ ์œ„์น˜์— ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜์ง€ ์•Š๋Š”๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์˜ ์œ ๋™์„ฑ์ด ํฌ์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 


๊ทธ๋ ‡๋‹ค๋ฉด Stack์œผ๋กœ ์‚ฌ์šฉ ์‹œ ArrayDeque๊ฐ€ ๋” ์ ํ•ฉํ•œ ์ด์œ ๋Š”?

Stack์€ ์ค‘๊ฐ„ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ LinkedList์˜ ์ถ”๊ฐ€์ ์ธ ์ด์ (์ค‘๊ฐ„ ์‚ฝ์ž…/์‚ญ์ œ)์€ ํ™œ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ LinkedList๋Š” ๊ฐ ์ด์ „/๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฐธ์กฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ArrayDeque๊ฐ€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ArrayDeque๋Š” ๊ตฌํ˜„์ด ๋ฐฐ์—ด๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ๊ตฌ์„ฑ์š”์†Œ๋“ค์ด ์„œ๋กœ ๋ฐ€์ ‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ LinkedList๋Š” ๊ฐ๊ฐ์˜ ์š”์†Œ๊ฐ€ ๊ฐ์ฒด๋กœ ๋”ฐ๋กœ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ€์ ‘ํ•œ ์œ„์น˜์— ์žˆ์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งจ ๋’ค์˜ ๊ฐ’์„ ๊บผ๋‚ด๋ฉด์„œ ํƒ์ƒ‰ํ•˜๋Š” Stack์˜ ํŠน์ง•๋Œ€๋กœ ํƒ์ƒ‰์„ ํ•˜๋ฉด ๋ฐฐ์—ด ๊ธฐ๋ฐ˜์˜ ArrayDeque๊ฐ€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๊ธฐ๋ฐ˜์˜ LinkedList๋ณด๋‹ค ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค! 

 

์—ฌ๊ธฐ์„œ ์ €๋Š” ํ•œ๊ฐ€์ง€ ๊ฑฑ์ •์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

 

ArrayDeque๋Š” ๋ฐฐ์—ด ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ํ˜„์žฌ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

  1. ์ƒˆ ๋ฐฐ์—ด ์ƒ์„ฑ: ๊ธฐ์กด ๋ฐฐ์—ด ํฌ๊ธฐ์˜ 2๋ฐฐ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ: ๊ธฐ์กด ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ O(n)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  3. ์ฐธ์กฐ ๋ณ€๊ฒฝ: ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง€๊ณ  ๋ฐฐ์—ด ํ™•์žฅ์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋ณต์‚ฌ ์ž‘์—…์ด ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋”์šฑ ์ปค์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ์ดˆ๊ธฐ์— ๋งค์šฐ ์ž‘์€ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์žฆ์€ ํฌ๊ธฐ ํ™•์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ.
  • ์‚ฝ์ž… ์ž‘์—…์ด ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•˜๋ฉฐ, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ž์ฃผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ.

ํ•˜์ง€๋งŒ ํ™•์žฅ ์ž‘์—…์˜ ๋นˆ๋„๋Š” ๋‚ฎ๊ธฐ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ/์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ๋Š” ํฌ๊ฒŒ ๋ฌธ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€์Šต๋‹ˆ๋‹ค. ArrayDeque๋Š” ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ 2๋ฐฐ์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•  ๋•Œ๋งŒ ํ™•์žฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐ ํฌ๊ธฐ๊ฐ€ 8์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, 8 → 16 → 32 → 64์™€ ๊ฐ™์ด ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์ด ๋งŽ๋”๋ผ๋„ ํ™•์žฅ ์ž‘์—…์€ ์ ์  ๋“œ๋ฌผ๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 


์‹ค์ œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ

์ด๋Ÿฌํ•œ ์ƒ๊ฐ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1์–ต๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ๋‹ค์‹œ 1์–ต๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

package barkingDog.stack;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.LinkedList;

public class StackTest {
    static int N = 100_000_000;
    public static void main(String[] args) throws Exception {
        long start = System.currentTimeMillis();
        Deque<Integer> stack = new ArrayDeque<>();
//        Deque<Integer> deque = new LinkedList<>();

        int count = 0;

        while(count++ <N){
            stack.addLast(1);
        }

        while(count++ <N){
            stack.pollLast();
        }

        long end = System.currentTimeMillis();

        System.out.println("===== ArrayDeque =====");
//      System.out.println("===== LinkedList =====");
        System.out.println("๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : " + (end - start)+"ms");
    }
}

 

๋จผ์ € ArrayDeque๋ฅผ 5๋ฒˆ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ํ‰๊ท  2501ms๊ฐ€ ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

๋‹ค์Œ์œผ๋กœ LinkedList๋กœ 5๋ฒˆ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ํ‰๊ท  10114ms๊ฐ€ ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

์•ฝ 4๋ฐฐ์ •๋„์˜ ์‹œ๊ฐ„์ด ์ฐจ์ด๋‚œ๋‹ค๋Š”๊ฒƒ์„ ์•Œ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ฒฐ๋ก 

๊ฒฐ๋ก ์ ์œผ๋กœ Stack์œผ๋กœ์„œ ArrayDeque๊ฐ€ LinkedList๋ณด๋‹ค ํšจ์œจ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ธ€์„ ์ฝ์œผ์‹œ๋Š” ๋ถ„๋“ค ๋ชจ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ํ•˜์‹ค ๋•Œ  Deque์˜ ๊ตฌํ˜„์ฒด๋กœ ArrayDeque๋ฅผ ์‚ฌ์šฉํ•˜์…”์„œ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์‹œ์ง€ ์•Š์œผ์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿ˜Š

 

 

์ฐธ๊ณ 

https://khnemu.tistory.com/10

https://kmularise.tistory.com/entry/javautilStack-%EC%8B%A4%EC%A0%9C%EB%A1%9C%EB%8A%94-%EC%9E%98-%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EC%9D%B4%EC%9C%A0%EB%8A%94

๋Œ“๊ธ€