优先队列PriorityQueue总结

优先队列是什么?

优先级队列并不是像普通普通的队列那样永远遵从先进先出, 而是有优先级的, 出队时让优先级高的先出队,底层使用的是堆。

创建方式

方式一、lambda表达式

	PriorityQueue<Integer> queue = new PriorityQueue<>(
            (o1, o2) -> o2 - o1
    );

方式二、重写compare方法

	PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    });

2、实现自定义排序
示例一、按字符串的第三位进行降序排列

	PriorityQueue<String> queue = new PriorityQueue<>(
            (o1, o2) -> o2.charAt(2) - o1.charAt(2)
    );

二、常用方法总结

add(); 队尾插入元素,调整堆结构,失败时抛异常
offer(); 队尾插入元素,调整堆结构,失败时抛false
remove(); 根据value值删除指定元素,调整堆结构,失败时抛异常
poll(); 删除队头元素,调整堆结构,失败时抛null
element(); 获取队列头元素
peek(); 获取队列头元素
clear(); 清空队列
size(); 获取队列元素个数
contains(); 判断队列中是否包含指定元素
isEmpty(); 判断队列是否为空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值