我知道我们可以使用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创建最大堆
发布于 2020-05-19 15:02:17
在PriorityQueue中没有同时接受集合和比较器的构造函数。
但是你可以使用addAll方法:
PriorityQueue pqmax = new PriorityQueue(Collections.reverseOrder());
pqmax.addAll(arr);发布于 2020-05-19 15:09:06
使用3),然后使用addAll。或者稍微好一点的方法是传递初始容量
PriorityQueue pqmax = new PriorityQueue(arr.size(), Collections.reverseOrder());
pqmax.addAll(arr);https://stackoverflow.com/questions/61884906
复制相似问题