Java優(yōu)先級(jí)隊(duì)列怎么使用

小億
99
2023-08-08 16:32:34

Java中的優(yōu)先級(jí)隊(duì)列可以使用java.util.PriorityQueue類(lèi)來(lái)實(shí)現(xiàn)。以下是使用優(yōu)先級(jí)隊(duì)列的基本步驟:

  1. 導(dǎo)入java.util.PriorityQueue類(lèi):
import java.util.PriorityQueue;
  1. 創(chuàng)建一個(gè)優(yōu)先級(jí)隊(duì)列對(duì)象:
PriorityQueue<Integer> pq = new PriorityQueue<>();
  1. 使用add()offer()方法將元素添加到隊(duì)列中。添加的元素會(huì)按照優(yōu)先級(jí)進(jìn)行排序,默認(rèn)情況下,優(yōu)先級(jí)隊(duì)列按照自然順序進(jìn)行排序。如果要自定義元素的排序方式,可以在創(chuàng)建優(yōu)先級(jí)隊(duì)列時(shí)傳入一個(gè)Comparator對(duì)象。
pq.add(10);
pq.add(5);
pq.add(15);
  1. 使用peek()方法獲取隊(duì)列中的最高優(yōu)先級(jí)元素(即隊(duì)列中的頭部元素),但不將其從隊(duì)列中刪除。
Integer highestPriority = pq.peek();
  1. 使用poll()方法獲取隊(duì)列中的最高優(yōu)先級(jí)元素,并將其從隊(duì)列中刪除。
Integer highestPriority = pq.poll();
  1. 使用size()方法獲取隊(duì)列中元素的數(shù)量。
int size = pq.size();
  1. 使用isEmpty()方法檢查隊(duì)列是否為空。
boolean isEmpty = pq.isEmpty();

需要注意的是,優(yōu)先級(jí)隊(duì)列不保證對(duì)于相同優(yōu)先級(jí)的元素的訪問(wèn)順序。如果需要確保相同優(yōu)先級(jí)的元素按照插入順序訪問(wèn),可以使用其他數(shù)據(jù)結(jié)構(gòu),如LinkedList。

0