W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
public interface Queue<E>
extends Collection<E>
設計用于在處理之前保存元素的集合。 除了基本的 Collection 操作之外,隊列還提供了額外的插入、提取和檢查操作。 這些方法中的每一種都以兩種形式存在:一種在操作失敗時拋出異常,另一種返回一個特殊值(null 或 false,取決于操作)。 后一種形式的插入操作是專門為與容量受限的隊列實現(xiàn)一起使用而設計的; 在大多數(shù)實現(xiàn)中,插入操作不會失敗。
隊列通常但不一定以 FIFO(先進先出)方式對元素進行排序。 例外情況包括優(yōu)先級隊列,它根據(jù)提供的比較器或元素的自然順序對元素進行排序,以及對元素進行排序的 LIFO 隊列(或堆棧) LIFO(后進先出)。 無論使用何種排序,隊列的頭部都是將通過調用 remove() 或 poll() 刪除的元素。 在 FIFO 隊列中,所有新元素都插入到隊列的尾部。 其他類型的隊列可能使用不同的放置規(guī)則。 每個 Queue 實現(xiàn)都必須指定其排序屬性。
如果可能,offer 方法插入一個元素,否則返回 false。 這與 Collection.add 方法不同,后者只能通過拋出未經(jīng)檢查的異常才能添加元素。 offer 方法設計用于當故障是正常而不是異常發(fā)生時使用,例如,在固定容量(或“有界”)隊列中。
remove() 和 poll() 方法刪除并返回隊列的頭部。 確切地從隊列中刪除哪個元素是隊列排序策略的函數(shù),該策略因實現(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 繼承基于標識的版本,因為對于具有相同元素但具有不同排序屬性的隊列,基于元素的相等性并不總是很好地定義。
此接口是 Java 集合框架的成員。
修飾符和類型 | 方法 | 描述 |
---|---|---|
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 |
boolean add(E e)
如果可以在不違反容量限制的情況下立即將指定元素插入此隊列,則在成功時返回 true,如果當前沒有可用空間則拋出 IllegalStateException。
指定者:
添加接口CollectionE
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
e | 要添加的元素 |
返回:
true(由 Collection#add 指定)
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalStateException | 如果此時由于容量限制無法添加元素 |
ClassCastException | 如果指定元素的類阻止它被添加到這個隊列 |
NullPointerException | 如果指定元素為空且此隊列不允許空元素 |
IllegalArgumentException | 如果此元素的某些屬性阻止它被添加到此隊列中 |
boolean offer(E e)
如果可以在不違反容量限制的情況下立即插入,則將指定元素插入此隊列。 當使用容量受限的隊列時,這種方法通常比 add(E) 更可取,add(E) 只能通過拋出異常來插入元素失敗。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
e | 要添加的元素 |
返回:
如果元素已添加到此隊列,則為 true,否則為 false
Throws:
Throw名稱 | Throw描述 |
---|---|
ClassCastException | 如果指定元素的類阻止它被添加到這個隊列 |
NullPointerException | 如果指定元素為空且此隊列不允許空元素 |
IllegalArgumentException | 如果此元素的某些屬性阻止它被添加到此隊列中 |
E remove()
檢索并刪除此隊列的頭部。 此方法與 poll 的不同之處僅在于如果此隊列為空,它將引發(fā)異常。
返回:
這個隊列的頭
Throws:
Throw名稱 | Throw描述 |
---|---|
NoSuchElementException | 如果此隊列為空 |
E poll()
檢索并刪除此隊列的頭部,如果此隊列為空,則返回 null。
返回:
此隊列的頭部,如果此隊列為空,則返回 null
E element()
檢索但不刪除此隊列的頭部。 此方法與 peek 的不同之處僅在于如果此隊列為空,它將引發(fā)異常。
返回:
這個隊列的頭
Throws:
Throw名稱 | Throw描述 |
---|---|
NoSuchElementException | 如果此隊列為空 |
E peek()
檢索但不刪除此隊列的頭部,如果此隊列為空,則返回 null。
返回:
此隊列的頭部,如果此隊列為空,則返回 null
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: