這篇文章將為大家詳細(xì)講解有關(guān)Java集合源碼分析之Queue怎么用,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、邛崍網(wǎng)站維護(hù)、網(wǎng)站推廣。
隊(duì)列在軟件開(kāi)發(fā)中擔(dān)任著重要的職責(zé),java函數(shù)的調(diào)用用到了棧的技術(shù),在處理并發(fā)問(wèn)題時(shí),BlockingQueue
很好的解決了數(shù)據(jù)傳輸?shù)膯?wèn)題。接下來(lái)我們看看Java是如何定義隊(duì)列的吧。
首先,Queue
也繼承自Collection
,說(shuō)明它是集合家族的一員。Queue
接口主要提供了以下方法:
//將元素插入隊(duì)列 boolean add(E e); //將元素插入隊(duì)列,與add相比,在容量受限時(shí)應(yīng)該使用這個(gè) boolean offer(E e); //將隊(duì)首的元素刪除,隊(duì)列為空則拋出異常 E remove(); //將隊(duì)首的元素刪除,隊(duì)列為空則返回null E poll(); //獲取隊(duì)首元素,但不移除,隊(duì)列為空則拋出異常 E element(); //獲取隊(duì)首元素,但不移除,隊(duì)列為空則返回null E peek();
Queue
的定義很簡(jiǎn)單,所以其實(shí)現(xiàn)類(lèi)也很簡(jiǎn)單,用簡(jiǎn)單的代碼做復(fù)雜的事情,值得我們學(xué)習(xí)。
AbstractQueue
僅實(shí)現(xiàn)了add
、remove
和element
三個(gè)方法,并且分別調(diào)用了另外一個(gè)僅細(xì)微區(qū)別的方法,我們這里只看其一
//這里我們就明白,對(duì)于有容量限制的,直接調(diào)用offer肯定會(huì)更快 public boolean add(E e) { if (offer(e)) return true; else throw new IllegalStateException("Queue full"); }
此外,它還實(shí)現(xiàn)了clear
與addAll
方法,重寫(xiě)這些方法可以使其更符合當(dāng)前場(chǎng)景。
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; }
關(guān)于“Java集合源碼分析之Queue怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。