星空网 > 软件开发 > Java

PriorityQueue优先队列用法入门

PriorityQueue是队列的一种,它叫做优先队列,该类实现了Queue接口

之所以叫做优先队列,是因为PriorityQueue实现了Comparator这个比较接口,也就是PriorityQueue内部具有了排序方法,在offer(插入)或poll(弹出)元素的过程中,优先队列中的数据会动态排序(而非显式的调用排序方法,可能初学者会这么认为)。

如果不提供Comparator的话,PriorityQueue会按默认的执行,即按照自然数排列,数字最小的优先权最高,对于字符串来说,则是按照字典序。

优先队列不同于常规的队列,对于常规队列来说,每次从队尾入队,队首出队;而对于优先权队列来说,每次出队则是优先权最高的元素。

下面呢,让我们以一个具体案例来更深入的理解PriorityQueue的用法。

 1 public static void main(String[] args) { 2     // TODO Auto-generated method stub 3     Queue<Integer> queue=new PriorityQueue<Integer>(10,new Comparator<Integer>() { 4  5       @Override 6       public int compare(Integer i, Integer j) { 7         // TODO Auto-generated method stub 8         //注意理解,这里是奇数在左侧,数字大的在左侧 9         int result=i%2-j%2;10         if(result==0)11           result=i-j;12         return result;13       }14     });15     for(int i=0;i<10;i++)16     {17       queue.offer(i);18     }19     for(int i=0;i<10;i++)20     {21       System.out.println(queue.poll());22     }23   }    

 

上述代码实现了一个比较器,该比较器设置为奇数在偶数的左侧,大数在小数的左侧。故输出结果为:0 2 4 6 8 1 3 5 7 9

如果,把比较器的参数i和j互换一下,那么,亲们,能猜测到结果吗?

参数互换以后,奇数在偶数的右侧,大数在小数的右侧(注意,个人感觉右侧的优先权最高,即右侧即为队首,勿喷~);

public static void main(String[] args) {    // TODO Auto-generated method stub    Queue<Integer> queue=new PriorityQueue<Integer>(10,new Comparator<Integer>() {      @Override      public int compare(Integer j, Integer i) {        // TODO Auto-generated method stub        int result=i%2-j%2;        if(result==0)          result=i-j;        return result;      }    });    for(int i=0;i<10;i++)    {      queue.offer(i);    }    for(int i=0;i<10;i++)    {      System.out.println(queue.poll());    }  }

打印结果为 9 7 5 3 1 8 6 4 2 0

 




原标题:PriorityQueue优先队列用法入门

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

tiktok店铺链接:https://www.goluckyvip.com/tag/82050.html
tiktok 跨境:https://www.goluckyvip.com/tag/82051.html
tiktok外网:https://www.goluckyvip.com/tag/82052.html
tiktok国际版怎么下载安卓:https://www.goluckyvip.com/tag/82053.html
tiktok插卡怎么用:https://www.goluckyvip.com/tag/82054.html
tiktok专线怎么搭建:https://www.goluckyvip.com/tag/82055.html
旅游景点的打油诗 旅游景点的打油诗怎么写:https://www.vstour.cn/a/366180.html
2024深圳龙岗区文化馆免费音乐培训课程安排+报名方式:https://www.vstour.cn/a/366181.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流