[설명]
[Stack 구현]
[예제]
// Stack
Stack<Integer> st = new Stack<>();
// push
st.push(10);
st.push(20);
// while문 => empty, pop
while(!st.empty()) {
System.out.println("stack : " + st.pop());
}
// stack 결과
// stack : 20
// stack : 10
[설명]
[Queue 구현]
[예제]
// Queue
Queue<Integer> qu = new LinkedList<>();
// offer
qu.offer(10);
qu.offer(20);
qu.offer(30);
// while문 => empty, poll
while(!qu.empty()) {
System.out.println("queue : " + qu.poll());
}
// queue 결과
// queue : 10
// queue : 20
// queue : 30
[설명]
[예제]
// Priority Queue
Queue<Integer> pqu = new PriorityQueue<>();
// offer
pqu.offer(10);
pqu.offer(20);
pqu.offer(5);
// while => isEmpty, poll
while(!pqu.isEmpty()) System.out.println("priority queue : " + pqu.poll());
// Priority Queue 결과
// priority queue : 5
// priority queue : 10
// priority queue : 20
// 우선순위 높은 순서대로 출력을 원한다면?
// Queue<Integer> pqu = new PriorityQueue<>(Collections.reverseOrder());
// Collections.reverseOrder() 설정해주면 됩니다
[설명]
어느 쪽이든 사용이 가능합니다
덱 메서드에 대응하는 Queue와 Stack의 메서드입니다
[비교(Deque, Queue, Stack)]
// Deque Queue Stack
/*
offerLast() offer() push()
pollLast() - pop()
peekFirst() peek() -
peekLast() - peek()
*/
[예제]
// Deque
Deque<Integer> deq = new ArrayDeque<>();
// Queue
deq.offerLast(10);
deq.offerLast(20);
deq.offerLast(30);
// pollFirst
int numTen = deq.pollFirst();
int numTwenty = deq.pollFirst();
// Queue, pollFirst 출력
System.out.println("numTen : " + numTen);
System.out.println("numTwenty : " + numTwenty);
System.out.println("Deque : " + deq);
// Queue, pollFirst 결과
// numTen : 10
// numTwenty : 20
// Deque : [30]
// Stack
deq.offerLast(40);
deq.offerLast(50);
// pollLast
int numFifty = deq.pollLast();
int numForty = deq.pollLast();
// Stack, pollLast 출력
System.out.println("numFifty : " + numFifty);
System.out.println("numForty : " + numForty);
System.out.println("Deque : " + deq);
// Stack, pollLast 결과
// numFifty : 50
// numForty : 40
// Deque : [30]