본문 바로가기

카테고리 없음

자바 Queue 클래스의 사용법과 예제: 제대로 익히는 방법을 한글로 알아보자!

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