1. Queue 클래스 소개
Queue 클래스는 자바에서 데이터를 저장하는 자료구조 중 하나로, 먼저 저장된 데이터가 먼저 나오는 FIFO(First-In-First-Out) 방식으로 동작합니다. 큐는 데이터를 삽입하는 enqueue()와 데이터를 제거하는 dequeue() 작업을 지원합니다. 또한, 데이터의 순서를 변경하지 않고, 새로운 데이터를 저장하거나 기존 데이터를 제거할 수 있습니다.
큐는 여러 분야에서 다양한 용도로 사용될 수 있습니다. 예를 들어, 작업 큐에서 작업을 순차적으로 처리하거나, 네트워크에서 데이터를 전송하는 큐, 프로세스 관리 시스템에서 프로세스를 스케줄링하기 위한 큐 등 다양한 경우에 활용됩니다. 자바에서는 Queue 인터페이스를 구현한 다양한 클래스를 제공하고 있으며, 이 중에서도 가장 일반적으로 사용되는 클래스는 java.util 패키지의 LinkedList 클래스입니다. 다음으로, Queue 클래스의 주요 메서드에 대해 알아보겠습니다.
2. Queue 클래스의 주요 메서드
Queue 클래스는 다음과 같은 주요 메서드를 제공합니다:
boolean add(E element)
: 주어진 요소를 큐에 추가합니다. 큐가 가득 차 있을 경우 IllegalStateException을 던집니다.boolean offer(E element)
: 주어진 요소를 큐에 추가합니다. 큐가 가득 차 있으면 요소를 추가하지 않고 false를 반환합니다.E remove()
: 큐의 첫 번째 요소를 제거하고 반환합니다. 큐가 비어있을 경우 NoSuchElementException을 던집니다.E poll()
: 큐의 첫 번째 요소를 제거하고 반환합니다. 큐가 비어있을 경우 null을 반환합니다.E element()
: 큐의 첫 번째 요소를 반환합니다. 큐가 비어있을 경우 NoSuchElementException을 던집니다.E peek()
: 큐의 첫 번째 요소를 반환합니다. 큐가 비어있을 경우 null을 반환합니다.
위의 메서드들은 큐의 기본적인 동작을 수행합니다. 큐에 요소를 추가하고 제거할 수 있으며, 요소를 가져오거나 체크할 수도 있습니다. 이제 Queue 클래스의 사용 예제를 살펴보겠습니다.
3. Queue 클래스 예제
다음은 Queue 클래스의 예제 코드입니다.
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 큐에 요소 추가
queue.add("apple");
queue.add("banana");
queue.add("cherry");
// 큐의 첫 번째 요소 반환
String firstElement = queue.peek();
System.out.println("First Element: " + firstElement);
// 큐의 첫 번째 요소 제거
String removedElement = queue.poll();
System.out.println("Removed Element: " + removedElement);
// 큐의 첫 번째 요소 반환
String newFirstElement = queue.peek();
System.out.println("New First Element: " + newFirstElement);
// 큐의 모든 요소 출력
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
이 예제에서는 LinkedList를 사용하여 Queue 인터페이스를 구현한 예시를 보여줍니다. Queue의 구현체인 LinkedList를 생성하고, add() 메서드를 사용하여 요소를 큐에 추가합니다. 이후 peek() 메서드를 통해 첫 번째 요소를 확인하고, poll() 메서드를 사용하여 첫 번째 요소를 제거합니다. 마지막으로 isEmpty() 메서드를 사용하여 큐가 비어있는지 확인하고, isEmpty()가 false를 반환하는 동안 모든 요소를 출력합니다.
실행 결과는 다음과 같습니다:
First Element: apple
Removed Element: apple
New First Element: banana
banana
cherry