大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java優先隊列PriorityQueue詳解

Java優先隊列PriorityQueue詳解

更新時間:2020-08-21 11:31:21 來源:動力節點 瀏覽1538次


Java優先隊列中有很多大家要掌握的知識點,其中有一點就是PriorityQueue,下面就由小編來給大家進行PriorityQueue詳解。


Java優先隊列

優先隊列概述


優先隊列PriorityQueue是Queue接口的實現,可以對其中元素進行排序,可以放基本數據類型的包裝類(如:Integer,Long等)或自定義的類,對于基本數據類型的包裝器類,優先隊列中元素默認排列順序是升序排列,但對于自己定義的類來說,需要自己定義比較器。


常用方法


peek()//返回隊首元素
poll()//返回隊首元素,隊首元素出隊列
add()//添加元素
size()//返回隊列元素個數
isEmpty()//判斷隊列是否為空,為空返回true,不空返回false


優先隊列的使用


1. 隊列保存的是基本數據類型的包裝類


//自定義比較器,降序排列
static Comparator cmp=new Comparator(){      
    public int compare(Integer e1, Integer e2) {        
      return e2 - e1;    
    }          
   };
public static void main(String[] args) { 
    //不用比較器,默認升序排列
    Queue q = new PriorityQueue<>();
    q.add(3);
    q.add(2);
    q.add(4);        
    while(!q.isEmpty())
    {
      System.out.print(q.poll()+" ");
     }        
    /**
     * 輸出結果
     * 2 3 4 
     */
    //使用自定義比較器,降序排列
    Queue qq = new PriorityQueue<>(cmp);
    qq.add(3);
    qq.add(2);
    qq.add(4);        
    while(!qq.isEmpty())
    {
      System.out.print(qq.poll()+" ");
     }        
     /**
      * 輸出結果
     * 4 3 2 
     *
/}


2. 隊列保存的是自定義類


//矩形類
class Node{    
   public Node(int chang,int kuan)
  {  
      this.chang=chang;        
      this.kuan=kuan;
  }    
  int chang;   
  int kuan;
}

public class Test {
    //自定義比較類,先比較長,長升序排列,若長相等再比較寬,寬降序
  static Comparator cNode=new Comparator() {        
      public int compare(Node o1, Node o2) {            
         if(o1.chang!=o2.chang)                
             return o1.chang-o2.chang;            
         else
        return o2.kuan-o1.kuan;
     }
        
   };    
   public static void main(String[] args) {
    Queue q=new PriorityQueue<>(cNode);
    Node n1=new Node(1, 2);
    Node n2=new Node(2, 5);
    Node n3=new Node(2, 3);
    Node n4=new Node(1, 2);
    q.add(n1);
    q.add(n2);
    q.add(n3);
    Node n;        
    while(!q.isEmpty())
    {
            
      n=q.poll();
      System.out.println("長: "+n.chang+" 寬:" +n.kuan);
     }
     /**      
       * 輸出結果
      * 長: 1 寬:2
      * 長: 2 寬:5
      * 長: 2 寬:3
      */
    }
}


3. 優先隊列遍歷


PriorityQueue的iterator()不保證以任何特定順序遍歷隊列元素。


若想按特定順序遍歷,先將隊列轉成數組,然后排序遍歷。


示例


Queue q = new PriorityQueue<>(cmp);
        int[] nums= {2,5,3,4,1,6};
        for(int i:nums)
        {
            q.add(i);
     }
     Object[] nn=q.toArray();
     Arrays.sort(nn);        
     for(int i=nn.length-1;i>=0;i--)
       System.out.print((int)nn[i]+" ");        
     /**
     * 輸出結果
     * 6 5 4 3 2 1 
     */


4. 比較器生降序說明


Comparator cmp = new Comparator() { 
       public int compare(Object o1, Object o2) { 
           //升序
      return o1-o2;            
      //降序
      return o2-o1;
    }
   };


以上就是Java優先隊列PriorityQueue詳解,大家要想了解更多,可到官網的技術文檔中查找相關文檔。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 综合亚洲网 | 亚洲午夜一区 | 天天操婷婷 | 亚洲成在人线久久综合 | 亚洲人成网站色7799在线观看 | 奇米网狠狠干 | 精品一区二区在线欧美日韩 | 国产精品欧美一区二区在线看 | 2021国产成人综合亚洲精品 | 香蕉视频免费在线观看 | 亚洲欧美综合人成野草 | 97视频免费人人观看人人 | 成人伊人青草久久综合网 | www国产永久免费视频看看 | 四虎国产精品永久在线 | 手机看片国产 | 天天操网站 | 91在线亚洲精品一区 | 噜鲁射图片 | 久久久久久亚洲精品 | 国产国拍亚洲精品福利 | 婷婷五月色综合香五月 | 99热久久国产精品这里 | 成人亚洲综合 | 亚洲国产一区二区在线 | 久久婷婷五色综合夜啪 | 在线欧美日韩国产 | 日韩 欧美 中文字幕 不卡 | 成人国产在线24小时播放视频 | 在线观看麻豆精品国产不卡 | 看真人视频一级毛片 | 在线观看福利网站 | 亚洲日本视频在线观看 | 精品国产一区二区三区久久 | 天天做天天玩天天爽天天 | 国产一区高清视频 | 久久精品国产精品亚洲艾 | 99久久久久国产精品免费 | 日韩区 | www久久久 | 香蕉视频国产在线观看 |