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

溫馨提示×

溫馨提示×

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

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

PriorityQueue優先級隊列是什么意思

發布時間:2021-07-02 16:20:07 來源:億速云 閱讀:242 作者:chen 欄目:大數據

這篇文章主要講解了“PriorityQueue優先級隊列是什么意思”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PriorityQueue優先級隊列是什么意思”吧!

JDK版本是1.8

特點

1.不能插入null對象

2.插入的對象支持排序。(可以自己傳入比較器)

3.如果排序的結果一樣的話,那么這兩個的對象在隊列中的位置是前后隨機的

4.隊列是無界的

5.線程不安全,如果安全請使用PriorityBlockingQueue

6.是一個完全二叉樹來實現的最小二叉堆(非子節點的值,不大于其左右子節點),所以使用數組進行存儲(父子節點的關系可以通過公式進行計算)。

主要的方法

1. add() 和 offer() 插入方法

兩種方法沒有什么本質的區別,add()只是把offer()方法包裝一下。

 if (e == null)
            throw new NullPointerException();
        modCount++;
        int i = size;
        if (i >= queue.length)
            grow(i + 1);//擴容
        size = i + 1;
        if (i == 0)
            queue[0] = e;//隊列為空的情況下,直接放入
        else
            siftUp(i, e); //調整節點(該方法是主要的方法),在位置i處插入e,和e的父節點比較,直到該節點大于或等于其父級或者是根。
        return true;

2.peek()獲取元素

獲取隊列頭元素,但不會刪除

(size == 0) ? null : (E) queue[0];

3.poll()獲取元素

獲取隊列頭元素,但會刪除頭元素,并且因為刪除頭元素,會調整隊列的元素位置

 if (size == 0)
            return null;
        int s = --size; //隊列大小減一
        modCount++;
        E result = (E) queue[0];//獲取頭元素
        E x = (E) queue[s];//記錄隊列最后的元素
        queue[s] = null;//刪除隊列最后的元素
        if (s != 0)
            siftDown(0, x);//調整整個隊列的元素的位置,在位置0處插入項x,和x的葉子節點比較,直到它小于或等于其子項或者是葉子
        return result;

應用

有關Top K 算法的解決方案(具體可以搜索相關的資料)

感謝各位的閱讀,以上就是“PriorityQueue優先級隊列是什么意思”的內容了,經過本文的學習后,相信大家對PriorityQueue優先級隊列是什么意思這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

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

AI

丹东市| 略阳县| 威海市| 轮台县| 鹿泉市| 图木舒克市| 叶城县| 石棉县| 衡阳县| 广灵县| 阳新县| 和硕县| 太谷县| 台安县| 文成县| 琼海市| 汾西县| 绩溪县| 麻城市| 平果县| 康定县| 商洛市| 乐昌市| 贡觉县| 田阳县| 石城县| 克东县| 灵石县| 西昌市| 三门县| 托里县| 綦江县| 清徐县| 琼结县| 高邮市| 亚东县| 福清市| 灵丘县| 建宁县| 曲松县| 神木县|