๐ ์๋ฐ์ ์ ์์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
์ถ์ฒ : https://gohighbrow.com/stacks-and-queues/
์คํ์ ๋ง์ง๋ง์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊บผ๋ด๋ Last in first out(LIFO)๊ตฌ์กฐ.
ํ๋ ์ฒ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊บผ๋ด๋ First in first out(FIFO)๊ตฌ์กฐ๋ค.
์ฐธ๊ณ ๋ก Stack์ ํด๋์ค, Queue๋ ์ธํฐํ์ด์ค๋ค.
Stack์ ๋ฉ์๋
method | ์ค๋ช |
---|---|
boolean empty() | Stack์ด ๋น์๋์ง ํ์ธ |
Object peek() | Stack ๋งจ ์์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ pop๊ณผ ๋ฌ๋ฆฌ ๊บผ๋ด๋ ๊ฒ์ ์๋ ๋น์ด ์๋ค๋ฉด EmptyStackException |
Oject pop() | ๋งจ ์์ ์ ์ฅ๋ ๊ฐ์ฒด๋ฅผ ๊บผ๋ธ๋ค. ๋น์๋ค๋ฉด ์ญ์ EmptyStackExcption |
Object push(Object item) | Stack์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ค |
int search(Object o) | ์ฃผ์ด์ง ๊ฐ์ฒดo๋ฅผ ์ฐพ์์ index๋ฅผ ๋ฐํ ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ 0์ด ์๋ 1๋ถํฐ ์์ |
Queue์ ๋ฉ์๋
method | ์ค๋ช |
---|---|
boolean add(Object o) | ์ง์ ํ ๊ฐ์ฒดo๋ฅผ Queue์ ์ถ๊ฐ. ์ ์ฅ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด IllegalStateException |
Ojbect remove() | ๊ฐ์ฒด๋ฅผ ๊บผ๋ด ๋ฐํ. ๋น์ด ์์ผ๋ฉด NoSuchElementException |
Object element() | ์ญ์ ์์ด ์์๋ฅผ ์ฝ๋๋ค. peek๊ณผ ๋ฌ๋ฆฌ ๋น์์ ๋ NoSuchElementException |
boolean offer(Object o) | ๊ฐ์ฒด ์ ์ฅ |
Object poll() | ๊ฐ์ฒด๋ฅผ ๊บผ๋ด ๋ฐํ, ๋น์์ผ๋ฉด null |
Object peek() | ์ญ์ ์์ด ์์ ์ฝ๋๋ค. ๋น์์ผ๋ฉด null. |
Stack vs. Queue
package com.javaex.ch11;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class StackAndQueue {
public static void main(String[] args) {
Stack stack = new Stack();
Queue queue = new LinkedList(); //Queue์ธํฐํ์ด์ค ๊ตฌํ์ฒด์ธ LinkedList
stack.push("0");
stack.push("1");
stack.push("2");
queue.offer("0");
queue.offer("1");
queue.offer("2");
System.out.println("=========Stack=========");
while (!stack.empty()) {
System.out.println(stack.pop());
}
System.out.println("=========Queue=========");
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
/*๊ฒฐ๊ณผ
=========Stack=========
2
1
0
=========Queue=========
0
1
2
*/
Queue์ ๋ณํ
Dequeue
Stack๊ณผ Queue์ ๊ฒฐํฉ. ์๋์์ ์ ์ฅoffer๊ณผ ์ญ์ poll๊ฐ๋ฅ.
๊ตฌํ ํด๋์ค:ArrayDeque, LinkedList
PriorityQueue
์ฐ์ ์์ ํ. ์ฐ์ ์์๊ฐ ๋์ ๊ฒ๋ถํฐ ๊บผ๋
null์ ์ฅ ๋ถ๊ฐ.
์
๋ ฅ 3,1,5,2,4 -> ์ถ๋ ฅ 1,2,3,4,5
Blocking Queue
๋น์ด ์์ ๋ ๊บผ๋ด๊ธฐ์ ๊ฐ๋ ์ฐจ ์์ ๋ ๋ฃ๊ธฐ๋ฅผ
์ง์ ๋ ์๊ฐ๋์ ์ง์ฐblock์ํด
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Arrays (0) | 2020.09.09 |
---|---|
List (0) | 2020.09.09 |
Collections Framework - ํต์ฌ ์ธํฐํ์ด์ค (0) | 2020.09.09 |
๋ด๋ถ ํด๋์คinner class (0) | 2020.09.09 |
์ถ์ํด๋์ค & ์ธํฐํ์ด์ค (0) | 2020.09.09 |