Java의 Class 중 하나인 Queue에 대해서 정리해보겠습니다.
Queue의 가장 큰 특징은 선입선출(FIFO, First In First Out) 입니다.
가장 먼저 들어온 데이터가 가장 먼저 나가는 구조로, Stack의 LIFO과는 반대됩니다.
데이터의 가장 앞쪽을 front, 가장 마지막을 rear 라고 하며,
front에서는 출력만을 담당하고, rear에서는 입력을 담당하게 됩니다.
이 때 Enqueue는 데이터를 가장 마지막에 입력, Dequeue는 가장 먼저 들어온 데이터를 출력하는 것을 의미합니다.
Queue의 주요 기능
import java.util.Queue;
import java.util.LinkedList;
Queue queue = new LinkedList();
// 데이터 입력 (1, 2, 3, 4, 5)
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
queue.add(5);
// 가장 먼저 입력된 데이터 삭제 및 출력 (1 삭제)
System.out.println(queue.poll());
// 다음 데이터 삭제 및 출력 (2 삭제)
System.out.println(queue.poll());
// 다음 데이터 출력 (3 출력)
System.out.println(queue.peek());
// 데이터 포함 여부 출력 (false)
System.out.println(queue.contains(3));
// 데이터의 크기 출력 (2)
System.out.println(queue.size());
// 데이터가 비어있는지 확인 (false)
System.out.println(queue.isEmpty());
// 데이터 전체 삭제
queue.clear();
// 데이터가 없는 경우 null 출력
System.out.println(queue.poll());
queue.remove(); // 데이터가 없는 경우 Exception(NoSuchException) 발생
Queue의 공간 복잡도와 시간 복잡도
add, pop, peek : O(1)
conatins : O(n)