首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用优先级队列将数组列表转换为java中的最大堆

如何使用优先级队列将数组列表转换为java中的最大堆
EN

Stack Overflow用户
提问于 2020-05-19 14:53:43
回答 2查看 256关注 0票数 0

我知道我们可以使用Collections.reverseOrder()使用priority queue创建一个最大堆,但我也需要在那个位置传递ArrayList。我试着创建一个自定义的比较器以防万一,但它似乎不起作用。我想知道这样做的确切语法。

示例/我的知识:

1)创建一个空的最小堆-> PriorityQueue pqmin = PriorityQueue();

2)从一个新的arr -> PriorityQueue pqmin = ArrayList PriorityQueue(Arr)创建一个最小堆;

3)创建一个空的最大堆-> PriorityQueue pqmax = PriorityQueue(Collections.reverseOrder());

我的问题:如何使用Java语言中的priorityQueue从现有的arrayList创建最大堆

EN

回答 2

Stack Overflow用户

发布于 2020-05-19 15:02:17

PriorityQueue中没有同时接受集合和比较器的构造函数。

但是你可以使用addAll方法:

代码语言:javascript
复制
PriorityQueue pqmax = new PriorityQueue(Collections.reverseOrder());
pqmax.addAll(arr);
票数 1
EN

Stack Overflow用户

发布于 2020-05-19 15:09:06

使用3),然后使用addAll。或者稍微好一点的方法是传递初始容量

代码语言:javascript
复制
 PriorityQueue pqmax = new PriorityQueue(arr.size(), Collections.reverseOrder()); 
 pqmax.addAll(arr);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61884906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档