Java의 PriorityQueue
- Java에서 PriorityQueue 선언
- PriorityQueue에 요소 추가
- PriorityQueue에서 요소 제거
- PriorityQueue 요소 액세스
- PriorityQueue 반복
PriorityQueue는 우선 순위에 따라 개체를 진행해야 할 때 사용됩니다. 또한 선입선출(First In First Out) 알고리즘을 기반으로 하지만 우선순위에 따라 요소를 진행해야 하는 경우가 있습니다. 이것이 PriorityQueue
가 작동하는 이유입니다. PriorityQueue
는 우선순위 힙을 기반으로 합니다. PriorityQueue
의 요소는 자연스러운 순서에 따라 정렬되며 queue
생성 시 사용된 생성자에 따라 다릅니다.
Java에서 PriorityQueue 선언
public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
여기서 E는 이 대기열에 있는 요소의 유형입니다.
PriorityQueue
클래스에서 다양한 작업을 수행하는 방법에 대해 논의해 보겠습니다.
PriorityQueue에 요소 추가
PriorityQueue
에 항목을 포함하려면 add()
메서드 또는 addition()
메서드를 사용할 수 있습니다. 삽입 순서는 PriorityQueue
내에 저장되지 않습니다. 이러한 요소는 기본적으로 오름차순인 우선 순위에 따라 저장됩니다.
예시:
import java.io.*;
import java.util.*;
public class PriorityQueueDemo {
public static void main(String args[]) {
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
System.out.println(pq);
}
}
출력:
[To, Welcome, Party]
PriorityQueue에서 요소 제거
PriorityQueue에서 요소를 제거하려면 delete()
메서드를 사용할 수 있습니다. 이러한 개체가 여러 개 있는 경우 개체의 첫 번째 인스턴스가 제거됩니다. 또한 poll()
메서드를 사용하여 헤드를 가져온 다음 교체할 수도 있습니다.
import java.io.*;
import java.util.*;
public class PriorityQueueDemo {
public static void main(String args[]) {
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
System.out.println("Initial PriorityQueue " + pq);
pq.remove("Geeks");
System.out.println("After Remove - " + pq);
System.out.println("Poll Method - " + pq.poll());
System.out.println("Final PriorityQueue - " + pq);
}
}
출력:
Initial PriorityQueue [To, Welcome, Party]
After Remove - [To, Welcome]
Poll Method - To
Final PriorityQueue - [Party]
PriorityQueue 요소 액세스
Queue
는 First In First Out 원칙을 기반으로 하기 때문에 Queue
의 헤드에만 액세스할 수 있습니다. 우선 순위인 Queue
요소에 액세스하려면 peek()
메서드를 사용할 수 있습니다.
예시:
// Java program to access elements
// from a PriorityQueue
import java.util.*;
class PriorityQueueDemo {
// Main Method
public static void main(String[] args) {
// Creating a priority queue
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
System.out.println("PriorityQueue: " + pq);
// Using the peek() method
String element = pq.peek();
System.out.println("Accessed Element: " + element);
}
}
출력:
PriorityQueue: [To, Welcome, Party]
Accessed Element: To
PriorityQueue 반복
PriorityQueue
를 반복하는 방법에는 여러 가지가 있습니다. 가장 잘 알려진 방법은 queue
를 배열로 변환한 다음 for 루프를 사용하여 순회하는 것입니다. 또한 queue
에는 queue
를 순환하는 데 사용할 수 있는 내부 반복자가 있습니다.
예시:
import java.util.*;
public class PriorityQueueDemo {
public static void main(String args[]) {
PriorityQueue<String> pq = new PriorityQueue<>();
pq.add("Welcome");
pq.add("To");
pq.add("Party");
Iterator iterator = pq.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + " ");
}
}
}
출력:
To Welcome Party