中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

白沙| 凉城县| 宁明县| 灌南县| 花垣县| 紫金县| 团风县| 阜新市| 青海省| 怀宁县| 博罗县| 库伦旗| 美姑县| 肇州县| 高安市| 雷山县| 碌曲县| 孝义市| 贵溪市| 东阳市| 建湖县| 靖江市| 新野县| 梅州市| 汉川市| 夏津县| 浑源县| 潼关县| 吴旗县| 栖霞市| 杭锦旗| 罗定市| 兴安盟| 荆州市| 南郑县| 安吉县| 苍梧县| 彩票| 南阳市| 德江县| 西青区|