1. Stack, Queue
push -----┐ ┌-----▶ pop
▼ |
| |
|---------|
| 2 |
|---------|
| 1 |
|---------|
| 0 |
|---------|
|---------|
Stack은 LIFO 구조입니다.
LIFO: Last In First Out(마지막에 들어온 것이 먼저 나간다)
아래서부터 차례대로 쌓인다고 보면됩니다.
0 -> 1 -> 2 로 쌓았을 때 제일 먼저 나가는 것은 무엇일 까요?
2겠죠. 즉 스택은 ArrayList와 같은 배열 기반 컬렉션 클래스가 적당합니다.
offer -------┐
▼
| |
|---------|
| 2 |
|---------|
| 1 |
|---------|
| 0 |
|---------|
| |
|
└-------▶ poll
Queue는 대기줄..? 이라고 보면 될것 같습니다.
줄을 먼저 차지한 사람이 먼저 나가게 되는거죠
0이 들어오면 0부터 나가게 됩니다.
따라서 순서대로 꺼내게 됩니다. 0 1 2 를 넣었다면 0 1 2로 꺼내지게 됩니다.
LinkedList로 구현하는 것이 적합합니다. 왜냐하면 ArrayList로 할 경우 매번 맨 앞 데이터를 삭제해서
빈 공간을 채울 때 데이터 복사가 일어나 비효율 적입니다.
2. 예제
public class StackQueueEx {
public static void main(String[] args) {
Stack stack = new Stack();
Queue queue = new LinkedList();
stack.push("0");
stack.push("1");
stack.push("2");
stack.push("3");
queue.add("0");
queue.add("1");
queue.add("2");
queue.add("3");
System.out.println("stack");
while (!stack.empty())
System.out.println(stack.pop());
System.out.println();
System.out.println("Queue");
while (!queue.isEmpty())
System.out.println(queue.poll());
}
}
Stack
3
2
1
0
Queue
0
1
2
3
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java- 컬렉션 프레임워크(Arrays) (0) | 2019.07.19 |
---|---|
Java- 컬렉션 프레임워크(Iterator) (0) | 2019.07.18 |
Java- 컬렉션 프레임워크(LinkedList) (0) | 2019.07.16 |
Java- 컬렉션 프레임워크(ArrayList) (0) | 2019.07.15 |
Java - 컬렉션 프레임워크 (0) | 2019.07.15 |