- STACK은 밑이 막혀 있는 통 구조여서, 0, 1, 2를 순서대로 저장한 다음 다시 추출하려면 2부터 꺼내야 한다.- 입력 순서 0, 1, 2- 출력 순서 2, 1, 0
- 순차적 추가 삭제가 이루어지기 때문에 배열이 적합하다.
1-1. STACK 사용법
- STACK은 클래스이기 때문에 객체 생성이 가능하다.
// 사용 예제
import java.util.Stack;
public class Stack_practice {
public static void main(String[] args) {
Stack st = new Stack();
st.push("0");
st.push("1");
st.push("2");
while(!st.empty()) { // 스택이 빌 때까지 반복
System.out.println(st.pop()); // 2, 1, 0 순으로 출력됨
}
}
}
1-2. STACK 메서드
메서드
설명
예외 발생 여부
boolen empty()
Stack이 비어있는지 알려준다.
-
Object peek()
Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 꺼내지는 않는다.
Stack이 비어있을 때 사용하면 EmptyStackException 발생, 예외처리가 필요하다.
Object pop()
Stack의 맨 위에 저장된 객체를 꺼낸다.
Stack이 비어있을 때 사용하면 EmptyStackException 발생, 예외처리가 필요하다.
Object push(Object item)
Stack에 객체(item)를 저장한다.
-
int search(Object o)
Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환하고, 못 찾으면 -1을 반환한다. indexOf()와 그 역할이 비슷하나 배열과 달리 0이 아닌 1부터 시작된다.
-
2. QUEUE
FIFO(FIRST IN FIRST OUT) 자료구조에서 사용되는 메소드를 정의하고 있는 인터페이스
<QUEUE → FIRST IN FIRST OUT>
- QUEUE는 위아래가 모두 뚫려있는 구조여서, 저장한 순서대로 꺼낼 수 있다.
- 입력 순서 0, 1, 2
- 출력 순서 0, 1, 2
- 배열에 넣을 경우 0부터 꺼내야 하기 때문에 비효율적. LinkedList 사용이 적합하다.
2-1. QUEUE 사용법
- QUEUE는 인터페이스이기 때문에 객체 생성이 불가능하다.
- 따라서 QUEUE를 사용하기 위해서는 직접 구현하는 방법과 QUEUE가 구현되어 있는 클래스를 사용하는 방법이 있다.
- JAVA API 문서에서 찾을 수 있고, 대표적으로 LinkedList를 많이 사용한다.
// 사용 예제
import java.util.LinkedList;
import java.util.Queue;
public class Queue_practice {
public static void main(String[] args) {
Queue q = new LinkedList();
q.offer("0");
q.offer("1");
q.offer("2");
while(!q.isEmpty()) {
System.out.println(q.poll()); // 0, 1, 2 순으로 출력됨
}
}
}
1-2. QUEUE 메서드
메서드
설명
예외 발생 여부
boolen add(Object o)
지정된 객체를 Queue에 추가한다. 성공하면 true를 반환
저장공간이 부족하면 IllegalSstateeException 발생, 예외처리가 필요하다.
Object remove()
Queue에서 객체를 꺼내 반환
비어있을 때 사용하면 NoSuchElementException 발생, 예외처리가 필요하다.
Object element()
삭제없이 요소를 읽어온다.
peek와 달리, Queue가 비어있을 때 사용하면 NoSuchElementException 발생, 예외처리가 필요하다.