看看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<E>的方法。3d

    add(E e)方法:若是能夠在不違反容量限制的狀況下當即執行此操做,則將指定的元素插入此隊列,成功時返回true,若是當前沒有可用空間則拋出IllegalStateException。加入成功,那麼就會放回true。這裏用的是offer方法的實現blog

    remove()檢索並刪除此隊列的頭部。若是元素不存在就拋出NoSuchElementException異常。這裏用的是poll方法的實現。繼承

    element()檢索返回但不刪除此隊列的頭部。用的是peek()方法。接口

        clear()方法在while裏面調用poll()直到返回null。隊列

    addAll(Collection<? extends E> c)方法須要Collection參數是非空的,還有不能包含本身,遍歷調用add方法,若是修改了,就是modified=true。element

    上面就是AbstractQueue中的方法。rem

    而後,我看看隊列的定義吧。

    隊列,又稱爲佇列(queue),是先進先出(FIFO, First-In-First-Out)的線性表。在具體應用中一般用鏈表或者數組來實現。隊列只容許在後端(稱爲rear)進行插入操做,在前端(稱爲front)進行刪除操做。

    隊列的操做方式和堆棧相似,惟一的區別在於隊列只容許新數據在後端進行添加。

有什麼討論的內容,能夠加我公衆號:

相關文章
相關標籤/搜索