亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

历史| 喀什市| 洞头县| 武胜县| 瑞昌市| 阿城市| 翁牛特旗| 苗栗市| 永靖县| 铜梁县| 休宁县| 丰镇市| 嘉义县| 云阳县| 涪陵区| 锡林郭勒盟| 葵青区| 东乌珠穆沁旗| 吴堡县| 玉溪市| 武陟县| 乳山市| 凤冈县| 诸暨市| 建始县| 长丰县| 洞口县| 武义县| 峨眉山市| 高州市| 休宁县| 广德县| 新源县| 桐柏县| 兴安县| 奉新县| 灵丘县| 瑞丽市| 苍山县| 开阳县| 迁安市|