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

java priorityqueue

人气:483 ℃/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

*/

    }

}

  • 哈弗h6储物卷帘盖怎么更换

    哈弗h6储物卷帘盖是属于卡扣式固定的,直接手工拆卸就可以打开。拆卸过程中需注意储物盒卡扣上是使用塑料的固定盖板进行固定的,注意不要弄断。随着汽车的普及,人们对于汽车提出了更高的...

    问答查看全文>>
  • 起亚嘉华发动机号位置在哪?

    起亚嘉华发动机号是在的发动机的缸体上面:1、发动机号最准确的名称是车辆识别码,是车辆身份证,这与人的身份证号相同,每辆车都有自己独特的串号和字母组成;2、由17位数字和字母组成...

    问答查看全文>>
  • 宝马3系价格曝光怎么样?

    宝马3系价格:1、现款华晨宝马3系指导价是31.68至36.68万,因为2019年中新一代3系就要上市了,所以现款都在清库存,优惠巨大(广州地区优惠9至13万左右);2、如果不...

    问答查看全文>>
  • 离合器烧了车还能开吗

    发现汽车离合器烧了不可以接着开,需要立即到维修点或手动进行更换。汽车烧离合器存在多种因素,比如驾驶员不规范的驾驶习惯等。行车过程中,离合没放到位或者离合没调好,导致离合分离不彻...

    问答查看全文>>
  • 湖南毕业游去哪里

    湖南毕业游去哪里?一起来看看小编今天的分享吧。1、凤凰古城旅游区4A景区还记得高中时期学到的沈从文《边城》中那令人向往的小城吗?那座小城就是沈从文以沈从文的故乡凤凰古城为背景所...

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