Collection - Stack, Queue

Stack

Stack์€ LIFO(Last In First Out) ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. (Stack ์ž๋ฃŒ๊ตฌ์กฐ ์‚ดํŽด๋ณด๊ธฐ)

์Šคํƒ์„ ์‘์šฉํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ JVM ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์ด๋ฉฐ, ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ณ€์ˆ˜๋Š” ๋‚˜์ค‘์— ์ €์žฅ๋œ ๊ฒƒ ๋ถ€ํ„ฐ ์ œ๊ฑฐ๋œ๋‹ค.

๋ฆฌํ„ดํƒ€์ž…

๋ฉ”์†Œ๋“œ

์„ค๋ช…

E

push(E item)

์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ฅผ ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค.

E

peek()

์Šคํƒ์˜ ๋งจ ์œ„ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. ๊ฐ์ฒด๋ฅผ ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š”๋‹ค.

E

pop()

์Šคํƒ์˜ ๋งจ ์œ„ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์Šคํƒ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

Stack<E> stack = new Stack<E>();

Queue

Queue๋Š” FIFO(First In First Out) ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. (Queue ์ž๋ฃŒ๊ตฌ์กฐ ์‚ดํŽด๋ณด๊ธฐ)

Queue๋ฅผ ์‘์šฉํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋Š” ์Šค๋ ˆ๋“œํ’€(ExecutorService)์˜ ์ž‘์—… ํ์ด๋‹ค. ์ž‘์—… ํ๋Š” ๋จผ์ € ๋“ค์–ด์˜จ ์ž‘์—…๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋ฆฌํ„ดํƒ€์ž…

๋ฉ”์†Œ๋“œ

์„ค๋ช…

boolean

offer(E e)

์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ฅผ ๋„ฃ๋Š”๋‹ค.

E

peek()

๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๊ฐ์ฒด๋ฅผ ํ์—์„œ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š”๋‹ค.

E

poll()

๊ฐ€์žฅ ๋จผ์ € ์ถ”๊ฐ€ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ํ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

Queue์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค๋Š” LinkedList์ด๋‹ค. LinkedList๋Š” List ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— List Collection์ด๊ธฐ๋„ ํ•˜๋‹ค.

Queue<E> queue = new LinkedList<E>();

ConcurrentLinkedQueue

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

Queue<E> queue = new ConcurrentLinkedQueue<E>();

ConcurrentLinkedQueue๋Š” lock-free ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•œ ์ปฌ๋ ‰์…˜์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ, lockํ•˜์ง€ ์•Š๊ณ , ์ตœ์†Œํ•œ ํ•˜๋‚˜์œผ ใ…ฃ์Šค๋ ˆ๋“œ๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์–ป๋„๋ก ํ•ด์ค€๋‹ค.

Last updated