大战熟女丰满人妻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詳解,大家要想了解更多,可到官網的技術文檔中查找相關文檔。


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品乱码高清在线观看 | 操你妹影院 | 美女黄频免费观看 | 日日做夜夜做 | 香蕉视频在线观看男女 | 中文字幕色婷婷在线精品中 | 国产日韩欧美综合一区二区三区 | 久久精品免视看国产成人2021 | 香蕉久久高清国产精品免费 | 亚洲精品一区二区三区四区手机版 | 91网址在线播放 | 成人国产精品久久久免费 | 黄色在线视频观看 | 国产日产欧美a级毛片 | 九九视频高清视频免费观看 | 五月天在线婷婷 | 狠狠色伊人亚洲综合成人 | 国产精品u任我爽爆在线播放 | 中国女人内谢25xxxxx | 成人在线激情视频 | 人人揉揉香蕉大免费不卡 | 亚洲激情在线播放 | 欧美aav| 一区二区三区鲁丝不卡麻豆 | 免费看欧美日韩一区二区三区 | 欧美三级做爰在线 | 亚洲欧美在线视频 | 免费一级黄色片 | 国产精品午夜波多野结衣性色 | 欧美视频在线不卡 | 日本欧美强乱视频在线 | 午夜爱爱网| 国产精品亚洲综合一区 | 老司机福利免费 | 国产精品乱码在线观看 | 久久精品伦理 | 国产日韩精品一区二区在线观看 | 性欧美另类老妇高清 | 曰本三级男人吃奶水 | 成人性毛片 | 91久久精品午夜一区二区 |