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

溫馨提示×

溫馨提示×

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

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

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

萝北县| 当涂县| 逊克县| 松桃| 凤庆县| 九龙县| 保靖县| 文成县| 荃湾区| 汾西县| 三台县| 乐亭县| 仙游县| 汝南县| 中宁县| 通榆县| 蓝田县| 方山县| 湖州市| 泸西县| 大洼县| 全椒县| 寿光市| 临湘市| 芜湖市| 黑龙江省| 宜宾县| 若尔盖县| 海丰县| 盖州市| 斗六市| 平遥县| 绵竹市| 东源县| 镇沅| 宝鸡市| 许昌县| 柳林县| 湛江市| 迁西县| 铁岭市|