스택(Stack) : LIFO구조 마지막에 저장된 것을 제일 먼저 꺼내게 된다.
저장(push) 추출(pop)
큐(Queue) : FIFO구조 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다.
저장(offer) 추출(poll)

스택은 배열로 구현하는게 좋음(순차적 삭제)
큐는 링크드리스트가 적합함(삭제시 자리이동이 필요없음)
Stack의 메서드
boolean empty( ) : Stack이 비어있는지 알려줌
Object peek( ) : Stack의 맨 위에 저장된 객체를 반환(객체를 꺼내지는 않음)
Object pop( ) : Stack의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStack Exception발생)
Object push ( ) : Stack에 객체를 저장
int search(Object o) : Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환, 못찾으면 -1를 반환
(배열과 달리 0이 아닌 1부터 시작) indexof와 유사
Queue의 메서드
boolean add(Object o) : 지정된 객체를 Queue에 추가 성공하면 true 반환 예외발생
bollean offer(Object o) : Queue에 객체를 저장 성공하면 true 반환 실패하면 false 반환 (예외발생 x)
Objcet remove( ) : Queue에서 객체를 꺼내 반환 비어있으면 예외발생 *try~catch 사용
Object poll( ) : Queue에서 객체를 꺼내 반환 비어있으면 null을 반환 (예외발생 x)ㄴ
Object element( ) : 삭제없이 요소를 읽어온다. 예외발생
Object peek( ) : 삭제없이 요소를 읽어온다. Queue가 비어있으면 null을 반환 (예외발생 x)
Stack은 클래스
Queue는 인터페이스라 객체 생성 x
1. Queue를 직접구현
2. Queue를 구현한 클래스를 사용
Stack과 Queue 예제
package ex;
import java.util.*;
public class Pra {
public static void main(String[] args) {
Stack st = new Stack();
Queue q = new 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.empty()) {
System.out.println(st.pop()); //스택에서 요소 하나 꺼내기
}
System.out.println(" Queue ");
while(!q.isEmpty()) {
System.out.println(q.poll()); //큐에서 요소 하나 꺼내기
}
}
}
결과값

'공부 > JAVA' 카테고리의 다른 글
| 자바의 특징 (0) | 2021.10.30 |
|---|---|
| 자바 nextInt() 후 nextLine() (0) | 2021.09.12 |
| 너비 우선 탐색(BFS) & 깊이 우선 탐색(DFS) (0) | 2021.08.27 |
| 완전탐색/이분탐색 (0) | 2021.08.22 |
| 기본형 타입 (0) | 2021.08.05 |