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
Was this helpful?