深入淺析JDK中的PriorityQueue-創(chuàng)新互聯(lián)

深入淺析JDK中的PriorityQueue?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

我們一直強調網(wǎng)站制作、成都做網(wǎng)站對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)站制作公司不一定是大公司,成都創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡公司選擇我們就是放心。

一.優(yōu)先隊列的應用

優(yōu)先隊列在程序開發(fā)中屢見不鮮,比如操作系統(tǒng)在進行進程調度時一種可行的算法是使用優(yōu)先隊列,當一個新的進程被fork()出來后,首先將它放到隊列的最后,而操作系統(tǒng)內部的Scheduler負責不斷地從這個優(yōu)先隊列中取出優(yōu)先級較高的進程執(zhí)行;爬蟲系統(tǒng)在執(zhí)行時往往也需要從一個優(yōu)先級隊列中循環(huán)取出高優(yōu)先級任務并進行抓取。可以想見,如果類似這樣的任務不適用優(yōu)先級進行劃分的話,系統(tǒng)必會出現(xiàn)故障,例如操作系統(tǒng)中低優(yōu)先級進程持續(xù)占用資源而高優(yōu)先級進程始終在隊列中等待。此外,優(yōu)先隊列在貪婪算法中也有一些應用。

二.優(yōu)先隊列的實現(xiàn)原理

優(yōu)先隊列的實現(xiàn)方式是使用二叉堆的結構,需要滿足以下兩條性質(Heap property),這里以小頂堆為例講解:

  1.任何結點的值都小于或等于其子節(jié)點的值。
  2.所有結點從上到下,從左到右填入,即一棵完全二叉樹。

基于這兩條規(guī)律,二叉堆在實現(xiàn)中往往會使用一個數(shù)組,下面我們研究一下JDK中二叉堆(優(yōu)先隊列)的實現(xiàn)。

三.優(yōu)先隊列在JDK中的實現(xiàn)方式

研究源碼最好的方式是debug,看每一步變量的變化,我們可以簡單寫一個Demo,debug進源碼一探究竟:

深入淺析JDK中的PriorityQueue

這里我們簡單地創(chuàng)建一個優(yōu)先隊列,向其中添加三個元素,我們可以在代碼第一行打一個斷點,如果您使用Eclipse編輯器的話,接下來可以按F5進入源碼中:

深入淺析JDK中的PriorityQueue

代碼運行到這里,PriorityQueue調用自己的一個重載構造器,第一個參數(shù)是數(shù)組默認大小,第二個是元素比較的Comparator,我們這里的Demo比較簡單,您在使用優(yōu)先隊列時可以選擇實現(xiàn)自己的Comparator。

 public PriorityQueue(int initialCapacity,
             Comparator<&#63; super E> comparator) {
    // Note: This restriction of at least one is not actually needed,
    // but continues for 1.5 compatibility
    if (initialCapacity < 1)
      throw new IllegalArgumentException();
    this.queue = new Object[initialCapacity];
    this.comparator = comparator;
  }

當前名稱:深入淺析JDK中的PriorityQueue-創(chuàng)新互聯(lián)
文章地址:http://muchs.cn/article20/djicjo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、App開發(fā)、網(wǎng)站設計、搜索引擎優(yōu)化、手機網(wǎng)站建設、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設