[java] 자바 큐 인터페이스의 다양한 활용 방법

자바에서는 큐(Queue)를 효율적으로 다룰 수 있는 Queue 인터페이스를 제공합니다. 큐는 선입선출(FIFO) 원칙을 따르는 자료구조로, 새로운 요소는 항상 뒤쪽에 추가되고, 요소를 읽을 때는 앞쪽에서부터 순서대로 읽어옵니다.

1. Queue 인터페이스 개요

Queue 인터페이스는 java.util 패키지에 속하며, 다음과 같이 선언됩니다.

public interface Queue<E> extends Collection<E>

이 인터페이스를 구현하는 클래스들은 처리할 데이터의 크기에 관계없이 성능이 일정하게 유지됩니다. 우리가 자주 사용하는 LinkedList와 PriorityQueue가 Queue 인터페이스를 구현한 대표적인 클래스들입니다.

2. 큐 인터페이스의 기본 메서드

Queue 인터페이스는 다양한 메서드를 제공하여 큐를 다루는 데 유용합니다. 그 중에서도 가장 중요한 메서드 몇 가지를 살펴보겠습니다.

2.1. add(E e)

boolean add(E e)

요소를 큐에 추가합니다. 만약 요소를 성공적으로 추가하면 true를 반환하고, 만약 공간이 가득 찼다면 IllegalStateException을 던집니다.

2.2. offer(E e)

boolean offer(E e)

요소를 큐에 추가합니다. 공간이 가득 차있어서 요소를 추가할 수 없는 경우 false를 반환합니다.

2.3. remove()

E remove()

큐에서 요소를 제거하고 반환합니다. 큐가 비어있을 경우 NoSuchElementException을 던집니다.

2.4. poll()

E poll()

큐에서 요소를 제거하고 반환합니다. 큐가 비어있는 경우 null을 반환합니다.

3. 큐의 활용 예시

다음은 큐 인터페이스를 사용하여 간단한 문자열 큐를 만들고 활용하는 예시입니다.

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

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

        queue.add("first");
        queue.add("second");
        queue.add("third");

        System.out.println(queue.peek()); // 출력: first
        System.out.println(queue.poll()); // 출력: first
        System.out.println(queue.poll()); // 출력: second
    }
}

위 예시에서는 LinkedList를 사용하여 Queue 인터페이스를 구현하고, add()를 통해 요소를 추가하고, poll()을 통해 요소를 제거하는 방법을 보여줍니다.

결론

Queue 인터페이스는 자바에서 큐를 다루는 다양한 기능을 제공하며, 많은 클래스에서 사용되고 있습니다. 다양한 상황에 맞게 적절한 메서드를 사용하여 큐를 활용하는 것이 중요합니다.