Search

PriorityQueue

부모클래스
Queue
기능
순서O
다중 선택
선택
PriorityQueue는 Java의 Queue 인터페이스를 구현하는 클래스입니다. 이는 특정 요소가 우선 순위에 따라 처리되어야 하는 상황에서 사용됩니다. PriorityQueue는 요소를 자연 순서에 따라, 또는 제공된 Comparator에 따라 우선 순위를 결정합니다.
기본적으로 PriorityQueue는 요소를 오름차순으로 정렬합니다. 즉, 가장 작은 요소가 가장 높은 우선 순위를 가집니다. 하지만 Comparator를 제공하여 이를 변경할 수 있습니다.
PriorityQueue는 다음과 같은 주요 메서드를 제공합니다:
1.
add(E e): 지정된 요소를 이 큐에 추가합니다.
2.
offer(E e): 지정된 요소를 이 큐에 추가합니다. (add()와 동일하지만, 큐가 꽉 찼을 경우에는 예외를 던지지 않고 false를 반환합니다)
3.
remove(): 이 큐의 맨 앞에 있는(우선 순위가 가장 높은) 요소를 제거하고 반환합니다.
4.
poll(): 이 큐의 맨 앞에 있는 요소를 제거하고 반환합니다. (remove()와 동일하지만, 큐가 비어 있을 경우에는 예외를 던지지 않고 null을 반환합니다)
5.
peek(): 이 큐의 맨 앞에 있는 요소를 제거하지 않고 반환합니다. 큐가 비어 있을 경우에는 null을 반환합니다.
6.
size(): 이 큐에 있는 요소의 수를 반환합니다.
7.
isEmpty(): 이 큐가 비어 있을 경우 true를 반환합니다.
8.
contains(Object o): 이 큐가 지정된 요소를 포함하고 있는 경우 true를 반환합니다.
PriorityQueue는 내부적으로 이진 힙(binary heap)을 사용하여 요소를 저장하므로, 요소의 삽입과 제거 연산이 로그 시간인 O(log n)에 가능합니다. 이는 중간 크기의 데이터 세트에서 높은 성능을 제공합니다.
다음은 PriorityQueue를 선언하고 사용하는 예제입니다:
PriorityQueue<Integer> queue = new PriorityQueue<>(); queue.add(3); queue.add(1); queue.add(2); Integer first = queue.poll(); // first는 1입니다.
Java
복사
이 예제에서 queue.poll() 메서드는 가장 우선 순위가 높은 요소, 즉 가장 작은 요소를 큐에서 제거하고 반환합니다.