Queue集合中的PriorityQueue实现类

Queue用于创建模拟队列这种数据结构,Queue接口中定义了如下几种方法:

方法
  • void add(Object e):将指定元素加入此队列的尾部
  • boolean offer(Object e):将指定元素加入此队列的尾部。当使用有容量限制的队列时,此方法更好用些。
  • Object element():获取队列头部的元素,但是不删除该元素
  • Object peek():获取队列头部的元素,但是不删除该元素。如果此队列为空,则返回null
  • Object poll():获取队列头部的元素,并删除该元素。如果此队列为空,则返回null
  • Object remove():获取队列头部的元素,并删除该元素。

    PriorityQueue实现类:
    PriorityQueue是一个比较标准的队列实现类,因为PriorityQueue保存队列元素的顺序不是按照加入队列的顺序,而是按照元素的大小进行重新排序。
    PriorityQueue不允许插入null元素,他还需要对队列元素进行排序,PriorityQueue有两种排序方式:

    自然排序:

    采用自然顺序的PriorityQueue集合中的元素必须实现了Comparable接口,而且应该是统一个类的多个实例,否则可能导致ClassCastException异常

PriorityQueue pq = new PriorityQueue();
        pq.offer(6);
        pq.offer(-9);
        pq.offer(20);
        pq.offer(18);
        System.out.println(pq);
        System.out.println(pq.poll());
        System.out.println(pq);
        System.out.println(pq.poll());
        System.out.println(pq);
        System.out.println(pq.poll());
        System.out.println(pq);
        System.out.println(pq.poll());
        System.out.println(pq);
定制排序

创建PriorityQueue队列时,传入一个Comparator对象,该对象负责对元素进行排序操作,此时不要求队列元素实现Comparable接口

PriorityQueue pq = new PriorityQueue((o1,o2) -> 
        {
            int m1 = (int)o1;
            int m2 = (int)o2;
            return m1>m2?-1:m1<m2?1:0;
        });
        pq.offer(6);
        pq.offer(-9);
        pq.offer(20);
        pq.offer(18);
        System.out.println(pq);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值