[java] 자바 큐 인터페이스의 동작 방식

자바에서 큐(Queue)는 선입선출(FIFO) 방식으로 요소를 저장하는 자료 구조를 말합니다. 자바에서 큐는 java.util.Queue 인터페이스를 통해 제공됩니다. 큐는 요소를 추가할 때는 한쪽 끝에 추가하고, 요소를 제거할 때는 반대쪽 끝에서 제거하는 방식으로 동작합니다.

주요 메서드

java.util.Queue 인터페이스는 다음과 같은 주요 메서드를 포함합니다.

  1. boolean add(E e): 요소를 큐에 추가하고 성공 여부를 반환합니다.
  2. boolean offer(E e): 요소를 큐에 추가하고 추가에 성공하면 true를, 그렇지 않으면 false를 반환합니다.
  3. E remove(): 큐에서 요소를 제거하고 제거된 요소를 반환합니다.
  4. E poll(): 큐에서 요소를 제거하고 제거된 요소를 반환합니다. 큐가 비어있을 경우 null을 반환합니다.

구현 클래스

자바는 Queue 인터페이스를 구현한 여러 클래스를 제공합니다. 그 중 가장 일반적인 것은 다음과 같습니다.

  1. java.util.LinkedList: 이중 연결 리스트를 사용하여 큐를 구현한 클래스입니다.
  2. java.util.PriorityQueue: 우선순위 큐를 구현한 클래스로, 요소들이 우선순위에 따라 정렬됩니다.

예제

다음은 LinkedList 클래스를 사용하여 큐를 생성하고 요소를 추가하고 제거하는 간단한 예제 코드입니다.

import java.util.LinkedList;
import java.util.Queue;

public class QueueExample {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();

        queue.add("First");
        queue.add("Second");
        queue.add("Third");

        System.out.println("Elements in the queue: " + queue);

        System.out.println("Removing an element: " + queue.remove());

        System.out.println("Elements in the queue after removal: " + queue);
    }
}

위 예제 코드에서는 LinkedList 클래스를 이용하여 큐를 생성하고, add() 메서드로 요소를 추가하고 remove() 메서드로 요소를 제거하는 과정을 보여줍니다.

큐는 데이터를 입력한 순서대로 처리해야 하는 상황에서 유용하게 활용될 수 있는 자료 구조입니다. 자바의 Queue 인터페이스와 그 구현 클래스들을 잘 활용하여 프로그래밍 과제를 해결하는 데 도움이 될 것입니다.

참고 자료