實現Queue介面的ArrayDeque類

來源:互聯網
上載者:User

Queue介面

public abstract boolean add(E paramE);

 

public abstract boolean offer(E paramE);

 

public abstract E remove();

 

public abstract E poll();

 

Queue介面提供了以上幾個方法。

看了ArrayDeque類的源碼。有以下幾點總結:

1)ArrayDeque有兩個類屬性,head和tail,兩個指標。

2)ArrayDeque通過一個數組作為載體,其中的數組元素在add等方法執行時不移動,發生變化的只是head和tail指標,而且指標是迴圈變化,數組容量不限制。

3)offer方法和add方法都是通過其中的addLast方法實現,每添加一個元素,就把元素加到數組的尾部,此時,head指標沒有變化,而tail指標加一,因為指標是迴圈加的,所以當tail追上head((this.tail = this.tail + 1 & this.elements.length - 1) == this.head)時,數組容量翻一倍,繼續執行。

4)remove方法和poll方法都是通過其中的pollFirst方法實現,每移除一個元素,該元素所在位置變成null,此時,tail指標沒有變化,而head指標加一,當數組中沒有資料時,返回null。

5)因為ArrayDeque不是安全執行緒的,所以,用作堆棧時快於 Stack,在用作隊列時快於 LinkedList。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.