优先级队列---PriorityDueque

  • 优先级队列可以按照任意顺序插入,但总是按照排序的顺序检索
  • 自定云对象实现comparble接口,放入优先级队列就可以实现比较了;但如果使用for循环直接获取元素,无法实现比较;需要使用队列的remove,poll,peek这些方法才能获取按优先级排序的元素
  • 无论何时调用remove方法,总会删除优先级最高的元素(习惯1为优先级最高)
  • 测试代码如下,按Stu 的 age 排序
  • public static void main(String[] args) {
            PriorityQueue<Stu> queue=new PriorityQueue<>();
            queue.add(new Stu("a","1",18));
            queue.add(new Stu("c","1",20));
            queue.add(new Stu("cd","0",5));
            queue.add(new Stu("fr","1",25));
            // 使用加强for循环或无法按设定获取结果,直接拿出没有比较
            for (Stu s:queue){
                System.out.println(s);
            }
            System.out.println("获取优先级最高的元素");
            // 获取优先级最高的元素
            while (!queue.isEmpty()){
                System.out.println(queue.poll());
            }
    
        }
    
    
    @Data // 创建geter,setter方法
    @ToString
    @AllArgsConstructor //创建构造函数
    @NoArgsConstructor
    public class Stu implements Comparable<Stu>{
        private String name;
        private String sex;
        private Integer age;
        @Override
        public int compareTo(Stu o) {
            return -this.getAge().compareTo(o.getAge());
        }
    
    }

     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值