자바에서 스택은 Stack 클래스를 구현하여 제공하고 있다.
Stack st = new Stack();
push(E item)
스텍의 맨 위에 지정된 요소를 추가합니다.
pop()
스텍의 맨 위에서 요소를 제거하고 반환합니다. 스텍이 비어 있으면 예외가 발생합니다.
peek()
스텍의 맨 위에서 요소를 반환합니다. 스텍이 비어 있으면 예외가 발생합니다.
큐
큐는 대기 줄에 비유할 수 있습니다. 흔히 놀이공원에 입장하기 위해 줄을 설 때, 먼저 온 사람이 먼저 들어가게 된다. 이러한 구조를 선입선출 구조라고 한다.
자바에서 큐는 인터페이스로만 정의해놓았을 뿐 별도의 클래스를 제공하고 있지 않다. 따라서 Queue 클래스 인스턴스를 생성하기 위해 Queue의 인터페이스 구현체인 LinkedList() 생성자를 호출해준다.
Queue q = new LinkedList();
offer(E e)
큐의 맨 뒤에 지정된 요소를 추가합니다. 큐가 가득 차서 요소를 추가 할수 없는 경우 false를 반환합니다.
add()
큐의 맨 뒤에 지정된 요소를 추가합니다. 큐가 가득 차서 요소를 추가 할수 없는 경우 IllegalStateException 예외를 발생시킵니다.
poll()
큐의 맨 앞에서 요소를 제거하고 반환합니다. 큐가 비어 있으면 null을 반환합니다.
peek()
큐의 맨 앞에서 요소를 반환합니다. 큐가 비어 있으면 null을 반환합니다.
clear()
큐의 모든 요소를 제거합니다.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class StackAndQueue {
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
stack.push("0");
stack.push("1");
stack.push("2");
Queue<String> queue = new LinkedList<String>();
queue.offer("0");
queue.offer("1");
queue.offer("2");
/*queue.add("3");
queue.add("4");
queue.add("5");*/
System.out.println("=== Stack ===");
while (!stack.empty()) {
System.out.println(stack.pop());
}
System.out.println("=== Queue ===");
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}