黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java優先隊列PriorityQueue詳解

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


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


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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 在线观看黄色影片 | 狠狠狠狠狠狠狠狠 | 日韩国产欧美 | 加勒比一本大道香蕉在线视频 | 小h片在线观看 | 色www免费视频 | 欧美一级专区免费大片 | 乱人伦中文字幕视频 | 成人啪 | 欧美日韩在线一区二区三区 | 最近最新好看的中文字幕2019 | 中文字幕一区在线观看视频 | 欧美妇性猛交视频 | 最近的最新的中文字幕在线 | 日本国产最新一区二区三区 | 欧美一区二区视频在线观看 | 曰批全过程免费视频免费看 | 亚洲欧美日韩天堂在线观看 | 激性欧美激情在线aa | 亚洲欧洲精品视频在线观看 | 国产成人做受免费视频 | 色播99 | 91精品欧美综合在线观看 | 国产看片一区二区三区 | 成人国产在线视频 | 午夜一区二区免费视频 | 国产成人精品s8p视频 | 污视频网站免费观看 | 成人18免费网站在线观看 | 最近免费最新高清中文字幕韩国 | 精品国产品欧美日产在线 | 欧美一区亚洲二区 | 2022中文字幕 | 亚洲高清一区二区三区久久 | 日韩欧美亚州 | 国产天堂网| 免费看黄色的网址 | 欧美一区二区三区在观看 | 好男人社区神马www在线观看 | 看黄网页 | 香蕉亚洲欧洲在线一区 |