Queue
Queue는 FIFO(First In, First Out) 원칙을 따르는 자료구조
먼저 들어온 데이터가 먼저 나가는 방식으로 동작하는 선형 자료구조, 선입선출 구조.
Java 에서는 java.util.Queue 인터페이스를 통해 구현됨.
주요 클래스는 1. LinkedList 2. PriorityQueue 3. ArrayDeque
package stack;
import java.util.ArrayDeque;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
public class Queue02 {
public static void main(String[] args) {
// Queue 자료구조 실습
// 1. LinkedList
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);
System.out.println(" 큐 상태 : " + queue);
System.out.println(" 큐의 첫번째 요소를 반환하되 제거하지 않음 : " + queue.peek());
System.out.println(" 큐의 첫번째 요소를 제거하고 반환 : " + queue.poll());
System.out.println(" 큐 상태 : " + queue);
// 2. PriorityQueue
// 우선순위 큐로 들어온 순서와 상관없이 우선순위가 높은 요소가 먼저 나가는 구조
Queue<Integer> queue2 = new PriorityQueue<>();
queue2.add(3);
queue2.add(2);
queue2.add(1);
System.out.println(" 큐 상태 2 : " + queue2);
System.out.println(" 큐의 첫번째 요소를 반환하되 제거하지 않음 2 : " + queue2.peek());
System.out.println(" 큐의 첫번째 요소를 제거하고 반환 2 : " + queue2.poll());
System.out.println(" 큐 상태 2 : " + queue2);
// 3. ArrayDeque
// 큐 뿐만 아니라 스택처럼도 사용 할 수 있는 Deque(Double Ended Queue)
// 양반향에서 요소를 추가하거나 제거할 수 있어 유용함
Queue<Integer> queue3 = new ArrayDeque<>();
queue3.add(1);
queue3.add(2);
queue3.add(3);
System.out.println(" 큐 상태 3 : " + queue3);
System.out.println(" 큐의 첫번째 요소를 반환하되 제거하지 않음 3 : " + queue3.peek());
System.out.println(" 큐의 첫번째 요소를 제거하고 반환 3 : " + queue3.poll());
System.out.println(" 큐 상태 3 : " + queue3);
}
}
활용
- BFS 알고리즘
- 작업 스케쥴링
- 캐시 구현
'자료구조 & 알고리즘 > 자료구조 & 알고리즘' 카테고리의 다른 글
[자료구조] 선형자료구조 (1) | 2024.09.13 |
---|---|
[자료구조] Queue 구현한 간단한 대기열 시스템 (0) | 2024.09.12 |
[자료구조] Stack (0) | 2024.09.10 |
자료구조 및 알고리즘 <시간복잡도> (0) | 2024.03.15 |
[자료구조] 자료구조 개념&종류 (0) | 2019.06.08 |