91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java集合Queue-ArrayDeque有什么作用

發布時間:2021-06-18 17:23:50 來源:億速云 閱讀:219 作者:chen 欄目:編程語言

本篇內容介紹了“Java集合Queue-ArrayDeque有什么作用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

ArrayDeque 的結構是一個循環數組,用作棧比Stack 性能優秀,用作隊列比LinkedList 要好

Java集合Queue-ArrayDeque有什么作用

1 成員變量及構造函數

  1. 成員變量

    因為是循環數組,所以本身就是一個數組elements來存儲元素,并且有數組的容量;而循環意味著在插入刪除元素的時候必定有兩個方向,所以會有headtail,類似于雙指針。

    Java集合Queue-ArrayDeque有什么作用

  2. 構造函數

    Java集合Queue-ArrayDeque有什么作用

    分析allocateElements ,原理上和HashMap中的計算容量的算法是差不多的

    Java集合Queue-ArrayDeque有什么作用

    Java集合Queue-ArrayDeque有什么作用

    以上函數是為了找到大于等于需要長度的最小2的冪整數。

2 增加

  1. offer

    Java集合Queue-ArrayDeque有什么作用

  2. add

    Java集合Queue-ArrayDeque有什么作用

  3. push

    Java集合Queue-ArrayDeque有什么作用

可以看到所有關于新增的操作都是調用了add 相關函數,源碼的解釋也如上圖所示。

3 刪除

  1. remove

    Java集合Queue-ArrayDeque有什么作用

  2. pop

    Java集合Queue-ArrayDeque有什么作用

  3. poll

    Java集合Queue-ArrayDeque有什么作用

4 查看

  1. contains

    Java集合Queue-ArrayDeque有什么作用

  2. peek

    Java集合Queue-ArrayDeque有什么作用

5 擴容

擴容發生的時機在增加中有體現,當head == tail 的時候就會調用doubleCapacity 進行擴容

Java集合Queue-ArrayDeque有什么作用

為什么不直接用一次System.arraycopy 來完成數組的遷移呢

Java集合Queue-ArrayDeque有什么作用

如果直接一次性全部遷移就會面臨一個問題,head和tail分別指向哪里呢。

  • 對于head,增加元素下標自減,刪除元素自增;對于tail,增加元素下標自增,刪除元素自減。

  • 一般情況下,head指向的是頭元素,tail指向的是尾元素

基于上述兩方面的考慮,最終的遷移如圖所示。

  • 往頭部增加元素: 那么和一開始的分析一樣,在element.length - 1 下標往小下標增加。

  • 刪除頭部元素: 那么就是4 = 0,并且head指向5,這里的數字是指元素而不是下標

  • 往尾部增加元素: tail正常往右移動

  • 刪除尾部元素: 3 = 0,并且tail指向3

“Java集合Queue-ArrayDeque有什么作用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜城县| 黄平县| 漾濞| 黔南| 印江| 阜新| 达日县| 台南市| 龙江县| 台安县| 西青区| 凤冈县| 阳新县| 莫力| 滨州市| 区。| 宝坻区| 奉新县| 宜兰县| 裕民县| 保德县| 光山县| 什邡市| 阿巴嘎旗| 正蓝旗| 松江区| 日土县| 民丰县| 乌鲁木齐县| 通城县| 翁源县| 汕尾市| 莱西市| 含山县| 固安县| 厦门市| 泽普县| 龙山县| 任丘市| 湟源县| 华安县|