鴻蒙OS Queue

2022-06-30 15:19 更新

Queue

public interface Queue<E>
extends Collection<E>

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

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

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

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

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

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

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

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

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

方法總結(jié)

修飾符和類型 方法 描述
boolean add(E e) 如果可以在不違反容量限制的情況下立即將指定元素插入此隊(duì)列,則在成功時(shí)返回 true,如果當(dāng)前沒有可用空間則拋出 IllegalStateException。
E element() 檢索但不刪除此隊(duì)列的頭部。
boolean offer(E e) 如果可以在不違反容量限制的情況下立即插入,則將指定元素插入此隊(duì)列。
E peek() 檢索但不刪除此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null。
E poll() 檢索并刪除此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null。
E remove() 檢索并刪除此隊(duì)列的頭部。
從接口 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)

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

指定者:

添加接口CollectionE

參數(shù):

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

返回:

true(由 Collection#add 指定)

Throws:

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

offer

boolean offer(E e)

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

參數(shù):

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

返回:

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

Throws:

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

remove

E remove()

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

返回:

這個(gè)隊(duì)列的頭

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果此隊(duì)列為空

poll

E poll()

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

返回:

此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null

element

E element()

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

返回:

這個(gè)隊(duì)列的頭

Throws:

Throw名稱 Throw描述
NoSuchElementException 如果此隊(duì)列為空

peek

E peek()

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

返回:

此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)