반응형
Stack | 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out) 구조 |
Queue | 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out) 구조 |
스택은 들어간 순서의 역순으로 꺼내어진다. 반대로 큐는 들어간 순서대로 꺼내게 된다.
순차적으로 데이터를 추가하고 삭제하는 스택에는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합하다.
큐는 항상 첫 번째 저장된 데이터를 삭제하고 꺼내므로 배열기반의 ArrayList 클래스를 사용하면 데이터를 꺼낼때마다 빈 공간을 채우기 위해 데이터의 복사가 발생하므로 비효율적이다. 그래서 큐는 LinkedList로 구현하는 것이 적합하다.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
public class StackQueueEx {
public static void main(String[] args) {
Stack st = new Stack<Object>();
Queue q = new LinkedList();
st.push(0);
st.push(1);
st.push(2);
q.offer(1);
q.offer(2);
q.offer(3);
System.out.println("==Stack==");
while (!st.empty()) {
System.out.println(st.pop());
}
System.out.println(("==Queue"));
while (!q.isEmpty()) {
System.out.println(q.poll());
}
}
}
실행결과
==Stack==
2
1
0
==Queue
1
2
3
참고 자바의정석
반응형
'DEV > Java' 카테고리의 다른 글
[자바] Comparator 와 Comparable (3) | 2023.02.14 |
---|---|
[자바] Arrays (7) | 2023.02.14 |
[자바] LinkedList (3) | 2023.02.11 |
[자바]ArrayList (6) | 2023.02.06 |
[자바] 컬렉션 프레임워크(Collections Framework) (4) | 2023.02.05 |
댓글