当前位置:家常菜>百科>科技>正文

java priorityqueue

人气:202 ℃/2024-09-10 23:16:36

java priorityqueue是怎样的呢?下面就让我们一起来了解一下吧:

java中的priorityqueue一般也就是代表优先队列。

这是属于Queue接口的实现,能够对其中元素进行排序,还能放基本数据类型的包装类或是自定义的类,而对于基本数据类型的包装类,优先队列中元素一般是默认排列顺序为升序排列的。

参考范例:

队列保存的是基本数据类型的包装类,具体代码为:

//自定义比较器,降序排列

static Comparator<Integer> cmp = new Comparator<Integer>() {

      public int compare(Integer e1, Integer e2) {

        return e2 - e1;

      }

    };

public static void main(String[] args) {

        //不用比较器,默认升序排列

        Queue<Integer> q = new PriorityQueue<>();

        q.add(3);

        q.add(2);

        q.add(4);

        while(!q.isEmpty())

        {

            System.out.print(q.poll()+" ");

        }

        /**

         * 输出结果

         * 2 3 4 

         */

        //使用自定义比较器,降序排列

        Queue<Integer> qq = new PriorityQueue<>(cmp);

        qq.add(3);

        qq.add(2);

        qq.add(4);

        while(!qq.isEmpty())

        {

            System.out.print(qq.poll()+" ");

        }

        /**

         * 输出结果

         * 4 3 2 

         */

}

队列保存的是自定义类,具体代码为:

//矩形类

class Node{

    public Node(int chang,int kuan)

    {

        this.chang=chang;

        this.kuan=kuan;

    }

    int chang;

    int kuan;

}

public class Test {

//自定义比较类,先比较长,长升序排列,若长相等再比较宽,宽降序

    static Comparator<Node> cNode=new Comparator<Node>() {

        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<Node> 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

*/

    }

}

  • 如何避免轮胎发生吃胎

    1、定期做四轮定位:四轮定位有着增加行驶安全、增加轮胎使用寿命、减低油耗、减少轮胎磨损(避免吃胎)、降低悬挂部件耗损等作用,所以定期去4S店或者比较专业的修理厂做一下四轮定位还...

    问答查看全文>>
  • 奥迪a6l观看行车记录仪的方法是什么?

    奥迪a6l查看行车记录仪的方法是:1、通过行车记录仪自带的屏幕进行查看;2、按照说明书的指示安装app,通过wifi实现与行车记录仪之间的连接即可查看;3、将行车记录仪上的内存...

    问答查看全文>>
  • 方向盘沉重可以调轻吗?

    方向盘沉重不可以调轻的。方向盘的轻重是不能进行调整的。方向盘变重的原因有多中,可能是车辆的胎压不足导致车辆转向时方向盘变重;或者是车辆的转向助力泵缺油导致转向重。方向盘沉重的解...

    问答查看全文>>
  • 360行车记录仪能远程监控吗

    可以,通过手机下载相关app,绑定汽车的行车记录仪就可以在手机上随时查看行车记录仪内的视频资料。行车记录仪是汽车通常使用外接仪器,一般用于记录车辆在行驶过程中的影像和声音。在使...

    问答查看全文>>
  • 红帽rhce考试注意事项

    很多朋友想知道红帽rhce考试注意事项有些什么,下面就让我们来看看吧。1、RHCE考试全程为上机考试,没有笔试。2、在考试过程中,手机必须全程调成静音或者关机模式。3、考试过程...

    科技查看全文>>
本网站部分内容、图文来自于网络,如有内容侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2007-2025 家常菜 All Rights Reserved. 手机版