[Java, 자료구조] Stack, Queue, Deque 비교

sa46lll·2022년 9월 26일
0

Set은 선형자료구조에 입력하는 시점에 중복하는 규칙이 제공된다.
이제는 값을 꺼낼 때 규칙이 적용되기로 해보자.

규칙: 어디서 값을 꺼낼 것인가?
1. 앞에서부터 꺼내면 Queue
2. 뒤에서부터 꺼내면 Stack

1. Stack

스택은 직접 클래스를 제공하고 있고 Vector를 상속받고 있다.

Stack<Integer> stack = new Stack<>();

1-1. LIFO

제일 늦게 들어간 놈이 제일 먼저 나온다.

2. Queue

큐는 인터페이스로만 제공되고 있다.
Quere를 implement하고 있는 클래스는 굉장히 많은데 그 중 LinkedList도 있다.

Queue<Integer> queue = new LinkedList<>();


add, remove, element 메소드를 사용하면 예외가 발생되고, offer, poll, peek 은 null과 같은 값이 반환된다.

2-1. FIFO

제일 먼저 들어간 놈이 제일 먼저 나온다.

3. Deque

앞뒤로 동시에 꺼내고 싶다면, 즉 Stack과 Queue를 동시에 활용하고 싶을 때 쓰는 자료구조
Deque도 마찬가지로 인터페이스로 제공되고 있다. 예시로는 LinkedList가 구현하고 있다.

Deque<Integer> deque = new LinkedList<>();

앞에 있는 요소를 꺼낼 때에는, offerFirst, pollFirst, peekFirst
뒤에 있는 요소를 꺼낼 때에는 offerLast, pollLast, peekLast 메소드를 사용한다.

4. Stack, Queue, Deque

Stack 생성, 꺼낼때, 조회 → push, pop, peek
Queue 생성, 꺼낼때, 조회 → offer, poll, peek
Deque 생성, 꺼낼때, 조회 → offer, poll, peek

들어간 순서대로 꺼내오려면 Queue,
들어간 반대로 꺼내오려면 Stack
양방향으로 꺼내오려면 Deque를 쓰자

💡 인덱스를 이용해 중간의 요소를 꺼내오는 경우에는 stack과 queue를 옮바르게 활용하는 방법이 아니다.

profile
비열한 커비

0개의 댓글