Stack
- LIFO, ๊ฐ์ฅ ๋์ค์ ๋ฃ์ ์์๊ฐ ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋จ
- ์ฃผ์ ๋ฉ์๋
- push(E item) : ์์ ์ฝ์
- pop() : ์์ ์ ๊ฑฐ ๋ฐ ๋ฐํ
- peek() : ์ต์๋จ ์์ ํ์ธ (์ ๊ฑฐ x)
- isEmpty() : ์คํ์ด ๋น์๋์ง ํ์ธ
- ๊ตฌํ ๋ฐฉ๋ฒ
Stack<E>
ํด๋์ค ์ฌ์ฉ
LinkedList
/ ArrayDeque
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack.pop()); // 3
System.out.println(stack.peek()); // 2
System.out.println(stack.isEmpty()); // false
}
}
Queue
- FIFO, ๋จผ์ ๋ฃ์ ์์๊ฐ ๋จผ์ ์ ๊ฑฐ๋จ
- ์ฃผ์ ๋ฉ์๋
- offer(E item) : ์์ ์ฝ์
- poll() : ์์ ์ ๊ฑฐ ๋ฐ ๋ฐํ
- peek() : ์ฒซ๋ฒ์งธ ์์ ํ์ธ(์ ๊ฑฐ x)
- isEmpty : ํ๊ฐ ๋น์๋์ง ํ์ธ
- ๊ตฌํ ๋ฐฉ๋ฒ
Queue<E>
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ LinkedList
/ ArrayDeque
import java.util.Queue;
import java.util.LinkedList;
public class QueueExample {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
System.out.println(queue.poll()); // 1
System.out.println(queue.peek()); // 2
System.out.println(queue.isEmpty()); // false
}
}
Deque (Double-Ended Queue)
- ์์ชฝ ๋์์ ์ฝ์
/์ญ์ ๊ฐ๋ฅ
- ์ฃผ์ ๋ฉ์๋
- addFirst(E e), addLast(E e) : ์/๋ค์ ์์ ์ถ๊ฐ
- removeFirst() , removeLast() : ์/๋ค์ ์์ ์ ๊ฑฐ
- getFirst(), getLast() : ์/๋ค ์์ ํ์ธ(์ ๊ฑฐ x)
- ๊ตฌํ ๋ฐฉ๋ฒ
- Deque ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ArrayDeque ๋๋ LinkedList ์ฌ์ฉ
import java.util.Deque;
import java.util.ArrayDeque;
public class DequeExample {
public static void main(String[] args) {
Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(1);
deque.addLast(2);
deque.addLast(3);
System.out.println(deque.removeFirst()); // 1
System.out.println(deque.removeLast()); // 3
System.out.println(deque.getFirst()); // 2
}
}