Java 48. Stack과 Queue
Stack과 Queue
Stack은 LIFO(Last in first out) Queue는 FIFO(First in first out)으로 되어있다.
Stack의 메서드
메서드 | 설명 |
---|---|
boolean empty( ) | Stack 이 비어있는지 알려줌 |
Object peek( ) | Stack 의 맨 위에 저장된 객체를 반환pop( ) 과 달리 Stack 에서 객체를 꺼내지 않음(비었을 때는 EmptyStackException 발생) |
Object pop( ) | Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStackException 발생) |
Object push(Object item) | Stack 에 객체( item )를 저장 |
int search(Object o) | Stack 에서 주어진 객체( o )를 찾아서 그 위치를 반환, 못 찾으면 -1 을 반환(배열과 달리 위치가 1부터 시작) |
Queue의 메서드
메서드 | 설 명 |
---|---|
boolean add(Object o) | 지정된 객체를 Queue 에 추가 성공하면 true를 반환, 저장공간이 부족하면 IllegalStateException 발생 |
Object remove( ) | Queue 에서 객체를 꺼내 반환. 비어있으면 NoSuchElementException 발생 |
Object element( ) | 삭제없이 요소를 읽어옴 peek 와 달리 Queue 가 비었을때 NoSuchElementException 발생 |
boolean offer(Object o) | Queue 에 객체를 저장 성공하면 true, 실패하면 false를 반환 |
Object poll( ) | Queue 에서 객체를 꺼내서 반환. 비어있으면 null을 반환 |
Object peek( ) | 삭제없이 요소를 읽어온다. Queue가 비어있으면 null을 반환 |
예제 |
package Example;
import java.util.*;
public class Example {
public static void main(String[] args) {
Stack st = new Stack();
Queue q = new LinkedList(); //Queue의 인터페이스 구현체인 LinkedList를 사용
st.push("0");
st.push("1");
st.push("2");
q.offer("0");
q.offer("1");
q.offer("2");
System.out.println("=== Stack ===");
while(!st.isEmpty()) {
System.out.println(st.pop());
}
System.out.println("=== Queue ===");
while(!q.isEmpty()) {
System.out.println(q.poll());
}
}
}
결과값
===Stack===
2
1
0
===Queue===
0
1
2
자베에서는 스택을 Stack클래스로 구현하여 제공하지만 큐는 Queue인터페이스만 있고 별도의 클래스가 없다. 그래서 Queue인터페이스를 구현한 클래스들을 사용해야 한다.