您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java集合源碼分析之Queue怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
隊列在軟件開發中擔任著重要的職責,java函數的調用用到了棧的技術,在處理并發問題時,BlockingQueue
很好的解決了數據傳輸的問題。接下來我們看看Java是如何定義隊列的吧。
首先,Queue
也繼承自Collection
,說明它是集合家族的一員。Queue
接口主要提供了以下方法:
//將元素插入隊列 boolean add(E e); //將元素插入隊列,與add相比,在容量受限時應該使用這個 boolean offer(E e); //將隊首的元素刪除,隊列為空則拋出異常 E remove(); //將隊首的元素刪除,隊列為空則返回null E poll(); //獲取隊首元素,但不移除,隊列為空則拋出異常 E element(); //獲取隊首元素,但不移除,隊列為空則返回null E peek();
Queue
的定義很簡單,所以其實現類也很簡單,用簡單的代碼做復雜的事情,值得我們學習。
AbstractQueue
僅實現了add
、remove
和element
三個方法,并且分別調用了另外一個僅細微區別的方法,我們這里只看其一
//這里我們就明白,對于有容量限制的,直接調用offer肯定會更快 public boolean add(E e) { if (offer(e)) return true; else throw new IllegalStateException("Queue full"); }
此外,它還實現了clear
與addAll
方法,重寫這些方法可以使其更符合當前場景。
public void clear() { while (poll() != null) ; } public boolean addAll(Collection<? extends E> c) { if (c == null) throw new NullPointerException(); if (c == this) throw new IllegalArgumentException(); boolean modified = false; for (E e : c) if (add(e)) modified = true; return modified; }
關于“Java集合源碼分析之Queue怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。