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

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Java優(yōu)先隊(duì)列PriorityQueue詳解

Java優(yōu)先隊(duì)列PriorityQueue詳解

更新時(shí)間:2020-08-21 11:31:21 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1641次


Java優(yōu)先隊(duì)列中有很多大家要掌握的知識(shí)點(diǎn),其中有一點(diǎn)就是PriorityQueue,下面就由小編來(lái)給大家進(jìn)行PriorityQueue詳解。


Java優(yōu)先隊(duì)列

優(yōu)先隊(duì)列概述


優(yōu)先隊(duì)列PriorityQueue是Queue接口的實(shí)現(xiàn),可以對(duì)其中元素進(jìn)行排序,可以放基本數(shù)據(jù)類型的包裝類(如:Integer,Long等)或自定義的類,對(duì)于基本數(shù)據(jù)類型的包裝器類,優(yōu)先隊(duì)列中元素默認(rèn)排列順序是升序排列,但對(duì)于自己定義的類來(lái)說(shuō),需要自己定義比較器。


常用方法


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


優(yōu)先隊(duì)列的使用


1. 隊(duì)列保存的是基本數(shù)據(jù)類型的包裝類


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


2. 隊(duì)列保存的是自定義類


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

public class Test {
    //自定義比較類,先比較長(zhǎng),長(zhǎng)升序排列,若長(zhǎng)相等再比較寬,寬降序
  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("長(zhǎng): "+n.chang+" 寬:" +n.kuan);
     }
     /**      
       * 輸出結(jié)果
      * 長(zhǎng): 1 寬:2
      * 長(zhǎng): 2 寬:5
      * 長(zhǎng): 2 寬:3
      */
    }
}


3. 優(yōu)先隊(duì)列遍歷


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


若想按特定順序遍歷,先將隊(duì)列轉(zhuǎn)成數(shù)組,然后排序遍歷。


示例


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]+" ");        
     /**
     * 輸出結(jié)果
     * 6 5 4 3 2 1 
     */


4. 比較器生降序說(shuō)明


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


以上就是Java優(yōu)先隊(duì)列PriorityQueue詳解,大家要想了解更多,可到官網(wǎng)的技術(shù)文檔中查找相關(guān)文檔。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久香蕉国产线看观看亚洲片 | 亚洲破处视频 | 国产欧美日韩一区二区三区视频 | aaa一级黄色片| 视频一区视频二区在线观看 | 亚洲精品久久国产小说 | 欧美日韩在线成人 | 成人免费看毛片 | 欧美精品亚洲精品日韩专 | 国产精品综合 | 二区不卡 | 四虎视频国产精品免费入口 | aaa国产一级毛片 | 四虎影在永久地址在线观看 | 中文福利视频 | 动漫美女h片黄动漫在线观看 | 精品国产线拍大陆久久尤物 | 国产一区中文字幕在线观看 | 免费香蕉视频 | 久久99中文字幕 | 亚洲日本在线观看视频 | 黄色一及毛片 | 天天操天天干视频 | 香蕉视频网站入口 | 日本美女视频韩国视频网站免费 | 亚洲激情视频网站 | 国产精品欧美在线 | 久久老色鬼天天综合网观看 | 久久合 | 免费一区二区三区免费视频 | 国产高清久久99 | 999毛片免费观看 | 国产福利免费在线观看 | 久久精品国产在爱久久 | 毛片免费观看久久欧美 | 日本在线网址 | 高清在线亚洲精品国产二区 | 日本一级在线观看 | 久青草中文字幕精品视频 | 欧美一区二区在线观看免费网站 | 久久永久免费 |