• Java 資料結構教程

Java 資料結構 - 優先佇列類



佇列是一種抽象資料結構,與棧有些類似。與棧不同,佇列的兩端都是開放的。一端始終用於插入資料(入隊),另一端始終用於刪除資料(出隊)。佇列遵循先進先出 (FIFO) 的方法,即最先儲存的資料項將首先被訪問。

隊列表示

現在我們已經瞭解到,在佇列中,我們出於不同的原因訪問兩端。下圖試圖解釋佇列作為資料結構的表示形式:

Queue Representation

與棧類似,佇列也可以使用陣列、連結串列、指標和結構來實現。為了簡單起見,我們將使用一維陣列來實現佇列。

PriorityQueue 類

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

  • 優先順序佇列的元素根據其自然順序或在佇列構造時提供的 Comparator 進行排序,具體取決於使用哪個建構函式。

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

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

類宣告

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

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

引數

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

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

類建構函式

序號 建構函式及描述
1

PriorityQueue()

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

2

PriorityQueue(Collection<? extends E> c)

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

3

PriorityQueue(int initialCapacity)

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

4

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

這將建立一個具有指定初始容量的 PriorityQueue,並根據指定的 Comparator 對元素進行排序。

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()

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

4

boolean contains(Object o)

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

5

Iterator<E> iterator()

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

6

boolean offer(E e)

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

7

E peek()

此方法檢索但不刪除此佇列的頭,如果此佇列為空,則返回 null。

8

E poll()

此方法檢索並刪除此佇列的頭,如果此佇列為空,則返回 null。

9

boolean remove(Object o)

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

10

int size()

此方法返回此集合中元素的數量。

11

Object[] toArray()

此方法返回一個包含此佇列中所有元素的陣列。

12

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

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

廣告

© . All rights reserved.