FIFO의 원칙을 지키는 큐와는 다른게 우선순위 큐는 우선순위에 따라 정보를 넣고 빼는 구조를 가지고 있다.
우선순위큐 (Priority queue)는 원소의 추가, 탐색, 그리고 삭제 연산이 있는 멀티 셋이다. 이때 탐색 및 사제의 대상이 되는 원소는 최소, 또는 최대 원소이며, 둘중 어느쪽이 되는지 큐 속성에 달려있다. 원소의 추가 삭제는 O(log n) 시간이 걸리며 탐색은 O(1) 시간이 걸린다.
특별한 이진 트리인 heap 기반으로 만들어 지며, 필요한 연산이 최대 혹은 최소 원소를 빨리 구하는 것이라면 우선순위 큐를 사용하는 것이 좋다.
자바에서 사용하기 위해 java.util.PriorityQueue를 import 해주면 된다.
생성자 | 설명 |
---|---|
PriorityQueue() | 기본 크기가 11인 우선순위 큐가 생성 |
PriorityQueue(int initialCapacity) | 기본크기를 설정할 수 있다. |
PriorityQueue(int initialCapacity, Comparator<? super E> comparator) | 기본크기와 특정한 순서를 가진 우선순위 큐를 생성한다. |
이름 | 설명 | 리턴타입 |
---|---|---|
add(E e) | 큐에 요소를 삽인한다. | boolean |
clear() | 큐의 모든 요소를 삭제한다. | void |
peek() | 큐의 우선값을 호출한다. 삭제는 하지 않는다. | E |
poll() | 큐의 수선값을 호출하고 삭제한다. | E |
offer() | 요소를 큐의 순서에 맞게 삽입한다 | boolean |
remove(Object o) | 특정 값을 큐에서 삭제한다. | boolean |
toArray(T[] a) | 큐를 특정 타입의 Array로 반환한다. | t[] |