BackEnd/Java
[Java] 스택(Stack), 큐(Queue)
summer_light
2021. 7. 19. 20:57
스택 Stack
쌓아 올리는 것
자료를 정해진 방향으로만 쌓을 수 있다.
가장 마지막에 입력된 자료가 가장 먼저 읽힌다. (LIFO)
※ LIFO: Last In First Out, 후입 선출구조
- 자료 저장: push
- 자료 읽기: pop
사용 : 브라우저 사용기록, 실행 취소
주요 메소드
- push(): 객체 입력
- peek(): 스택의 맨 위 객체를 가져온다. 제거 x
- pop(): 스택의 맨 위 객체를 가져온다. 제거 o
Stack st = new Stack();
st.push("1");
st.push("2");
st.push("3");
st.push("4");
st.push("5");
//추출
while (!st.isEmpty()) {
String str = st.pop();
System.out.println(str);
}
결과:
5
4
3
2
1
→ 스택은 후입선출구조(LIFO) 이므로 마지막에 입력된 5부터 출력된다.
큐 Queue
줄 서서 기다리는 것
한쪽에서는 입력이, 다른 쪽에서는 출력이 실행된다.
먼저 입력된 자료를 먼저 출력한다. (FIFO)
※ FIFO: First In First Out, 선입 선출구조
사용 : 프린트 출력, 프로세스 실행
주요 메소드
- offer(): 객체 입력
- peek(): 큐의 객체를 가져온다. 제거X
- poll(): 큐의 객체를 가져온다. 제거O
결과:Queue<String> qu = new LinkedList<String>(); qu.offer("1"); qu.offer("2"); qu.offer("3"); qu.offer("4"); qu.offer("5"); while (!qu.isEmpty()) { String str = qu.poll(); System.out.println(str);
1
2
3
4
5
→ 큐는 선입선출구조(FIFO)이므로, 가장 먼저 입력된 1부터 출력된다.