queue源码java_看看AbstractQueue源码Java9
現在我們看看這個類AbstractQueue,此類提供某些Queue操作的核心實現。方法add,remove和element分別基于offer,poll和peek,但拋出異常而不是通過false或null返回指示失敗。
擴展此類的Queue實現必須最低限度地定義一個方法Queue.offer(E),該方法不允許插入null元素,以及Queue.peek(),Queue.poll(),Collection.size()和Collection.iterator()方法。通常,還會覆蓋其他方法。如果無法滿足這些要求,請考慮繼承AbstractCollection。
這里只有一個protected的構造方法,其實里面是什么都沒有做的。
然后,我們看看具體AbstractQueue有哪些方法,這里主要是實現了接口Queue的方法。
add(E e)方法:如果可以在不違反容量限制的情況下立即執行此操作,則將指定的元素插入此隊列,成功時返回true,如果當前沒有可用空間則拋出IllegalStateException。加入成功,那么就會放回true。這里用的是offer方法的實現
remove()檢索并刪除此隊列的頭部。如果元素不存在就拋出NoSuchElementException異常。這里用的是poll方法的實現。
element()檢索返回但不刪除此隊列的頭部。用的是peek()方法。
clear()方法在while里面調用poll()直到返回null。
addAll(Collection extends E> c)方法需要Collection參數是非空的,還有不能包含自己,遍歷調用add方法,如果修改了,就是modified=true。
上面就是AbstractQueue中的方法。
然后,我看看隊列的定義吧。
隊列,又稱為佇列(queue),是先進先出(FIFO, First-In-First-Out)的線性表。在具體應用中通常用鏈表或者數組來實現。隊列只允許在后端(稱為rear)進行插入操作,在前端(稱為front)進行刪除操作。
隊列的操作方式和堆棧類似,唯一的區別在于隊列只允許新數據在后端進行添加。
有什么討論的內容,可以加我公眾號:
總結
以上是生活随笔為你收集整理的queue源码java_看看AbstractQueue源码Java9的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ambari 修改服务器名,Ambari
- 下一篇: 记事本java代码_java实现Wind