๐ Stack
Stack์ ํ์ ์ ์ถ(LIFO: Last In First Out) ๊ตฌ์กฐ๋ก ๋์ด ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์์์ฌ๋ฆฌ๋ ํํ์ด๋ฉฐ, ๋จ๋ฐฉํฅ ์ ์ถ๋ ฅ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. ์คํ์ ์์คํ ํดํน, ๊ทธ๋ํ์ ๊น์ด ์ฐ์ ํ์(DFS) ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๋ค.
// ์คํ ์ ์ธ
Stack<Integer> stack = new Stack<>();
// ๋ฐ์ดํฐ ์ถ๊ฐ
stack.push(1);
stack.push(2);
stack.push(3);
// ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ
int top = stack.pop(); // 3
top = stack.pop(); // 2
top = stack.pop(); // 1
// ์คํ ๋น์ด์๋์ง ํ์ธ
boolean isEmpty = stack.empty(); // true
๐ Queue
Queue๋ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ FIFO(First In First Out) ๊ตฌ์กฐ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์์๋๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, BFS(Breadth-First Search) ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ปดํจํฐ ๋ฒํผ์์ ํ์ฉ๋๋ค.
// ํ ์ ์ธ
Queue<Integer> queue = new LinkedList<>();
// ๋ฐ์ดํฐ ์ถ๊ฐ
queue.offer(1);
queue.offer(2);
queue.offer(3);
// ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ
int front = queue.poll(); // 1
front = queue.poll(); // 2
front = queue.poll(); // 3
// ํ ๋น์ด์๋์ง ํ์ธ
boolean isEmpty = queue.isEmpty(); // true
๐ Deque
Deque(๋ฑ ๋๋ ๋ฐํฌ)๋ Double-Ended Queue์ ์ค์๋ง๋ก, ํ์ ์์ชฝ์ผ๋ก ๋ฐ์ดํฐ์ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ์ํํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. LIFO๋ FIFO ์์๋ฅผ ๋ฐ๋ฅด์ง ์์ผ๋ฉฐ, ์์ชฝ ๋์ ๋ํ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ด ๋ฐ์ดํฐ ์ ๊ทผ๊ณผ ์กฐ์์ด ์ฉ์ดํ๋ค.
// ๋ฑ ์ ์ธ
Deque<Integer> deque = new LinkedList<>();
// ์์ชฝ์ ๋ฐ์ดํฐ ์ถ๊ฐ
deque.offerFirst(1);
deque.offerFirst(2);
// ๋ค์ชฝ์ ๋ฐ์ดํฐ ์ถ๊ฐ
deque.offerLast(3);
deque.offerLast(4);
// ์์ชฝ์์ ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ
int first = deque.pollFirst(); // 2
first = deque.pollFirst(); // 1
// ๋ค์ชฝ์์ ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ
int last = deque.pollLast(); // 4
last = deque.pollLast(); // 3
๐ก ๊ทธ๋ฆผ
'JAVA > Theory' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Deque์ LinkedList (0) | 2024.04.26 |
---|---|
[Java] HashMap๊ณผ HashSet (1) | 2024.04.25 |
[MAVEN] SpringMVC ๋ฒ์ 2 (0) | 2024.03.05 |
[MAVEN] SpringMVC ๋ฒ์ 1 (0) | 2024.03.05 |
[Spring] ์์กด ์ฃผ์ ์ ์ํ ์ด๋ ธํ ์ด์ (1) | 2024.03.04 |
๋๊ธ