[자료구조] Queue
자바(Java)에서 Queue는 데이터를 순서대로 관리하기 위한 자료구조 중 하나이다.
이 자료구조는 선입선출(FIFO, First-In-First-Out)의 원칙을 따르며, 데이터가 들어온 순서대로 처리된다.
Java에서 Queue는 java.util 패키지에 속해 있으며, 다양한 구현체를 제공한다.
대표적인 Queue 구현체로는 LinkedList, ArrayDeque, PriorityQueue 등이 있다.
LinkedList는 연결 리스트를 기반으로 한 Queue 구현체이다. 요소를 추가하거나 삭제할 때마다 리스트의 노드를 생성하거나 제거하기 때문에 처리 속도가 느리지만, 요소를 삽입하거나 삭제하는 작업에는 빠르게 대응할 수 있다.
ArrayDeque는 배열을 기반으로 한 Queue 구현체이다. Queue의 크기를 동적으로 조정할 수 있으며, 요소를 추가하거나 삭제할 때 배열의 원소를 이동시키는 방식으로 처리하기 때문에 LinkedList에 비해 처리 속도가 빠르다.
PriorityQueue는 우선순위를 고려하여 데이터를 저장하는 Queue 구현체이다. 요소를 추가할 때 우선순위에 따라 정렬되며, 우선순위가 가장 높은 요소가 먼저 처리된다.
Queue 인터페이스는 offer(), poll(), peek() 메서드를 제공한다.
offer() 메서드는 Queue의 맨 뒤에 요소를 추가한다.
poll() 메서드는 Queue의 맨 앞에서 요소를 제거하고 반환한다.
peek() 메서드는 Queue의 맨 앞 요소를 반환한다.
예를 들어, 다음과 같이 Queue를 생성하고 요소를 추가하고 삭제할 수 있다.
Queue<String> queue = new LinkedList<>();
queue.offer("apple");
queue.offer("banana");
queue.offer("cherry");
String first = queue.poll(); // "apple" 반환
String second = queue.peek(); // "banana" 반환
위의 코드에서는 LinkedList를 사용하여 Queue를 생성하였고, offer() 메서드를 사용하여 "apple", "banana", "cherry" 요소를 순서대로 추가하였다.
그리고 poll() 메서드를 사용하여 맨 앞 요소를 삭제하고 반환하였고,
peek() 메서드를 사용하여 맨 앞 요소를 반환하였다.