Java PriorityQueue 類



簡介

Java PriorityQueue 類是一個基於優先順序堆的無界優先順序佇列。以下是關於 PriorityQueue 的重要幾點:

  • 優先順序佇列的元素根據它們的自然順序排序,或者根據在佇列構造時提供的比較器排序,這取決於使用哪個建構函式。

  • 優先順序佇列不允許空元素。

  • 依賴自然順序的優先順序佇列也不允許插入不可比較的物件。

類宣告

以下是java.util.PriorityQueue類的宣告:

public class PriorityQueue<E>
   extends AbstractQueue<E>
   implements Serializable

引數

以下是java.util.PriorityQueue類的引數:

E - 這是此集合中儲存的元素的型別。

類建構函式

序號 建構函式和描述
1

PriorityQueue()

這將建立一個具有預設初始容量 (11) 的 PriorityQueue,它根據其元素的自然順序對其進行排序。

2

PriorityQueue(Collection<? extends E> c)

這將建立一個包含指定集合中元素的 PriorityQueue。

3

PriorityQueue(int initialCapacity)

這將建立一個具有指定初始容量的 PriorityQueue,它根據其元素的自然順序對其進行排序。

4

PriorityQueue(int initialCapacity, Comparator<? super E> comparator)

這將建立一個具有指定初始容量的 PriorityQueue,它根據指定的比較器對其元素進行排序。

5

PriorityQueue(PriorityQueue<? extends E> c)

這將建立一個包含指定優先順序佇列中元素的 PriorityQueue。

6

PriorityQueue(SortedSet<? extends E> c)

這將建立一個包含指定有序集中元素的 PriorityQueue。

類方法

序號 方法和描述
1 boolean add(E e)

此方法將指定的元素插入到此優先順序佇列中。

2 void clear()

此方法從此優先順序佇列中刪除所有元素。

3 Comparator<? super E> comparator()

此方法返回用於對該佇列中的元素進行排序的比較器,如果此佇列是根據其元素的自然順序排序的,則返回 null。

4 boolean contains(Object o)

如果此佇列包含指定的元素,則此方法返回 true。

5 void forEach​(Consumer<? super E> action)

此方法對 Iterable 的每個元素執行給定的操作,直到所有元素都已處理或操作引發異常。

6 Iterator<E> iterator()

此方法返回此佇列中元素的迭代器。

7 boolean offer(E e)

此方法將指定的元素插入到此優先順序佇列中。

8 boolean remove(Object o)

如果存在,此方法從此佇列中刪除指定元素的一個例項。

9 boolean removeAll​(Collection<?> c)

此方法刪除此集合中也包含在指定集合中的所有元素(可選操作)。

10 boolean removeIf​(Predicate<? super E> filter)

此方法刪除滿足給定謂詞的此集合的所有元素。

11 boolean retainAll​(Collection<?> c)

此方法僅保留此集合中包含在指定集合中的元素(可選操作)。

12 Spliterator<E> spliterator()

此方法在此佇列中的元素上建立一個延遲繫結且快速失敗的 Spliterator。

13 <T> T[] toArray(T[] a)

此方法返回一個包含此佇列中所有元素的陣列;返回陣列的執行時型別是指定陣列的型別。

繼承的方法

此類繼承自以下類的 方法:

  • java.util.AbstractQueue
  • java.util.AbstractCollection
  • java.util.Object
  • java.util.Collection

向優先順序佇列新增項示例

以下示例顯示了 Java PriorityQueue add(E) 方法的使用,用於新增整數。我們使用 add() 方法為每個元素新增幾個整數到 PriorityQueue 物件,然後列印每個元素以顯示已新增的元素。

package com.tutorialspoint;

import java.util.PriorityQueue;

public class PriorityQueueDemo {
   public static void main(String[] args) {
      
      // create an empty priority queue with an initial capacity
      PriorityQueue<Integer> queue = new PriorityQueue<>(5);

      // use add() method to add elements in the queue
      queue.add(20);
      queue.add(30);
      queue.add(20);
      queue.add(30);
      queue.add(15);
      queue.add(22);
      queue.add(11);

      // let us print all the elements available in queue
      for (Integer number : queue) {
         System.out.println("Number = " + number);
      }
   }
}

讓我們編譯並執行上述程式,這將產生以下結果:

Number = 11
Number = 20
Number = 15
Number = 30
Number = 30
Number = 22
Number = 20
廣告