鴻蒙OS Queue

2022-06-30 15:19 更新

Queue

public interface Queue<E>
extends Collection<E>

設(shè)計用于在處理之前保存元素的集合。 除了基本的 Collection 操作之外,隊列還提供了額外的插入、提取和檢查操作。 這些方法中的每一種都以兩種形式存在:一種在操作失敗時拋出異常,另一種返回一個特殊值(null 或 false,取決于操作)。 后一種形式的插入操作是專門為與容量受限的隊列實現(xiàn)一起使用而設(shè)計的; 在大多數(shù)實現(xiàn)中,插入操作不會失敗。

隊列通常但不一定以 FIFO(先進先出)方式對元素進行排序。 例外情況包括優(yōu)先級隊列,它根據(jù)提供的比較器或元素的自然順序?qū)υ剡M行排序,以及對元素進行排序的 LIFO 隊列(或堆棧) LIFO(后進先出)。 無論使用何種排序,隊列的頭部都是將通過調(diào)用 remove() 或 poll() 刪除的元素。 在 FIFO 隊列中,所有新元素都插入到隊列的尾部。 其他類型的隊列可能使用不同的放置規(guī)則。 每個 Queue 實現(xiàn)都必須指定其排序?qū)傩浴?/p>

如果可能,offer 方法插入一個元素,否則返回 false。 這與 Collection.add 方法不同,后者只能通過拋出未經(jīng)檢查的異常才能添加元素。 offer 方法設(shè)計用于當故障是正常而不是異常發(fā)生時使用,例如,在固定容量(或“有界”)隊列中。

remove() 和 poll() 方法刪除并返回隊列的頭部。 確切地從隊列中刪除哪個元素是隊列排序策略的函數(shù),該策略因?qū)崿F(xiàn)而異。 remove() 和 poll() 方法僅在隊列為空時的行為不同:remove() 方法拋出異常,而 poll() 方法返回 null。

element() 和 peek() 方法返回但不刪除隊列的頭部。

Queue 接口沒有定義并發(fā)編程中常見的阻塞隊列方法。 這些等待元素出現(xiàn)或空間可用的方法在 BlockingQueue 接口中定義,該接口擴展了該接口。

隊列實現(xiàn)通常不允許插入 null 元素,盡管某些實現(xiàn),例如 LinkedList,不禁止插入 null。 即使在允許的實現(xiàn)中,也不應該將 null 插入到隊列中,因為 null 也被 poll 方法用作特殊返回值,以指示隊列不包含任何元素。

隊列實現(xiàn)通常不定義方法 equals 和 hashCode 的基于元素的版本,而是從類 Object 繼承基于標識的版本,因為對于具有相同元素但具有不同排序?qū)傩缘年犃?,基于元素的相等性并不總是很好地定義。

此接口是 Java 集合框架的成員。

方法總結(jié)

修飾符和類型 方法 描述
boolean add(E e) 如果可以在不違反容量限制的情況下立即將指定元素插入此隊列,則在成功時返回 true,如果當前沒有可用空間則拋出 IllegalStateException。
E element() 檢索但不刪除此隊列的頭部。
boolean offer(E e) 如果可以在不違反容量限制的情況下立即插入,則將指定元素插入此隊列。
E peek() 檢索但不刪除此隊列的頭部,如果此隊列為空,則返回 null。
E poll() 檢索并刪除此隊列的頭部,如果此隊列為空,則返回 null。
E remove() 檢索并刪除此隊列的頭部。
從接口 java.util.Collection 繼承的方法
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray
從接口 java.lang.Iterable 繼承的方法
forEach

方法詳情

add

boolean add(E e)

如果可以在不違反容量限制的情況下立即將指定元素插入此隊列,則在成功時返回 true,如果當前沒有可用空間則拋出 IllegalStateException。

指定者:

添加接口CollectionE

參數(shù):

參數(shù)名稱 參數(shù)描述
e 要添加的元素

返回:

true(由 Collection#add 指定)

Throws:

Throw名稱 Throw描述
IllegalStateException 如果此時由于容量限制無法添加元素
ClassCastException 如果指定元素的類阻止它被添加到這個隊列
NullPointerException 如果指定元素為空且此隊列不允許空元素
IllegalArgumentException 如果此元素的某些屬性阻止它被添加到此隊列中

offer

boolean offer(E e)

如果可以在不違反容量限制的情況下立即插入,則將指定元素插入此隊列。 當使用容量受限的隊列時,這種方法通常比 add(E) 更可取,add(E) 只能通過拋出異常來插入元素失敗。

參數(shù):

參數(shù)名稱 參數(shù)描述
e 要添加的元素

返回:

如果元素已添加到此隊列,則為 true,否則為 false

Throws:

Throw名稱 Throw描述
ClassCastException 如果指定元素的類阻止它被添加到這個隊列
NullPointerException 如果指定元素為空且此隊列不允許空元素
IllegalArgumentException 如果此元素的某些屬性阻止它被添加到此隊列中

remove

E remove()

檢索并刪除此隊列的頭部。 此方法與 poll 的不同之處僅在于如果此隊列為空,它將引發(fā)異常。

返回:

這個隊列的頭

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果此隊列為空

poll

E poll()

檢索并刪除此隊列的頭部,如果此隊列為空,則返回 null。

返回:

此隊列的頭部,如果此隊列為空,則返回 null

element

E element()

檢索但不刪除此隊列的頭部。 此方法與 peek 的不同之處僅在于如果此隊列為空,它將引發(fā)異常。

返回:

這個隊列的頭

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果此隊列為空

peek

E peek()

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

返回:

此隊列的頭部,如果此隊列為空,則返回 null

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號