利用java优先队列创建最大堆:
PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1); // 最大堆
①lambda表达式
在java8后引入,可将函数直接写入参数表,提高了代码紧凑性
//接收参数o1,o2,返回o2-o1
(o1, o2) -> o2 - o1
更多用法见菜鸟教程
②PriorityQueue
java提供优先队列数据结构,默认为最小堆,操作如下
方法 | 作用 |
---|---|
add()/offer() | 添加入队,前者在插入失败时抛出异常,后则则会返回false |
element()/peek() | 获取但不删除队首元素,当方法失败时前者抛出异常,后者返回null |
remove()和poll() | 获取并删除队首元素,当方法失败时前者抛出异常,后者返回null |
而上述代码利用lambda表达式重写comparator方法,实现了最大堆