W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
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 集合框架的成員。
修飾符和類型 | 方法 | 描述 |
---|---|---|
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 |
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ì)列中 |
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ì)列中 |
E remove()
檢索并刪除此隊(duì)列的頭部。 此方法與 poll 的不同之處僅在于如果此隊(duì)列為空,它將引發(fā)異常。
返回:
這個(gè)隊(duì)列的頭
Throws:
Throw名稱 | Throw描述 |
---|---|
NoSuchElementException | 如果此隊(duì)列為空 |
E poll()
檢索并刪除此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null。
返回:
此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null
E element()
檢索但不刪除此隊(duì)列的頭部。 此方法與 peek 的不同之處僅在于如果此隊(duì)列為空,它將引發(fā)異常。
返回:
這個(gè)隊(duì)列的頭
Throws:
Throw名稱 | Throw描述 |
---|---|
NoSuchElementException | 如果此隊(duì)列為空 |
E peek()
檢索但不刪除此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null。
返回:
此隊(duì)列的頭部,如果此隊(duì)列為空,則返回 null
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: