자료구조는 컴퓨터 과학에서 데이터를 구조적으로 제어하고 조직화하는 방법을 의미합니다. 큐는 데이터를 먼저 넣은 것이 먼저 나오는 (FIFO, First-In-First-Out) 방식으로 동작하는 자료구조입니다. 이번 포스팅에서는 자바의 Queue 인터페이스 및 그 구현 클래스들의 동작 방식에 대해 알아보겠습니다.
Queue 인터페이스
자바에서 큐는 java.util.Queue
인터페이스를 통해 정의되며, FIFO 방식에 따라 데이터를 삽입하고 제거할 수 있는 메서드들을 제공합니다. 주요 메서드로는 add()
, offer()
, remove()
, poll()
, element()
, peek()
등이 있습니다.
LinkedList를 이용한 Queue 구현
java.util.LinkedList
클래스는 큐를 구현하는 데 사용될 수 있는 표준 클래스입니다. 이 클래스는 Queue
인터페이스를 구현하고 있어, 큐로 사용될 수 있습니다. 다음은 LinkedList를 이용한 큐의 간단한 예시 코드입니다.
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.offer(2);
System.out.println(queue.remove());
System.out.println(queue.poll());
}
}
위 코드에서 add()
및 offer()
메서드를 통해 데이터를 넣고, remove()
및 poll()
메서드를 통해 데이터를 추출합니다.
ArrayDeque를 이용한 Queue 구현
java.util.ArrayDeque
클래스는 큐와 스택 모두를 구현할 수 있는 더블 엔드 큐(Double-Ended Queue)입니다. 따라서 큐로 사용할 수 있으며, 배열 기반의 큐로 구현되어 성능이 우수합니다. 다음은 ArrayDeque를 이용한 큐의 간단한 예시 코드입니다.
import java.util.ArrayDeque;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<Integer> queue = new ArrayDeque<>();
queue.add(1);
queue.offer(2);
System.out.println(queue.remove());
System.out.println(queue.poll());
}
}
결론
자바에서는 큐를 구현하기 위해 LinkedList
나 ArrayDeque
를 활용할 수 있습니다. 큐는 데이터의 순서가 중요한 경우에 유용하게 활용될 수 있는 자료구조이므로, 잘 이해하고 활용하는 것이 중요합니다.
이상으로 자바의 큐 자료구조의 동작 방식에 대해 알아보았습니다.
참고 자료: Oracle Java Documentation