当前位置: 首页 > 知识库问答 >
问题:

如何将PriorityQueue转换为按排序顺序排列的列表?

殷浩慨
2023-03-14

如何将PriorityQueue按排序顺序转换为List而不更改(投票()等PriorityQueue?我们希望保留PriorityQueueList

将2,3,1添加PriorityQueue将其排序为1,2,3。从PriorityQueue创建一个ArrayList将具有2,3,1的顺序。PriorityQueue中的iterator()toArray()方法也将具有2,3,1的顺序。我猜这与PriorityQueue的实现有关。

共有1个答案

方波娃
2023-03-14

正如JavaDoc中关于优先级队列的说明:

方法Iterator()中提供的迭代器不能保证以任何特定顺序遍历优先级队列的元素。

必须这样做似乎是一种奇怪的情况。您可能希望查看您的用例,并确保您使用的是最佳解决方案。例如,您可以使用树集而不是列表。或者,您可能首先需要重新考虑如何处理队列。

但是为了回答您的问题,将PriorityQueue的优先级元素复制到List中的一种非常简单(但可能效率不高?)的方法是:

PriorityQueue<T> pq = ...
List<T> myList = new ArrayList<>(pq);
Collections.sort(myList, pq.comparator());
 类似资料:
  • 问题内容: 我有以下查询,该查询基于逗号分隔的列表返回行 我希望此查询的结果以ID在列表中的顺序返回。SQL可以做到吗? 提前致谢 问题答案: 如果您需要输出以特定顺序显示,则需要使用服务器可以排序的内容来指定该顺序。不知道您要使用哪个引擎,一般的方案是创建一个临时表或使用行集构造函数将每个记录ID与所需的排序顺序配对。 例如(SQL Server)

  • 问题内容: 我是Java的新手,正在尝试按字母顺序排列术语的arrayList。(一个术语定义为一个字符和一个整数)(例如 我的代码如下: 为什么这不起作用?以及我该如何完成呢?我的arrayList称为术语,填充有Term类型 问题答案: 您在这行代码中遇到的问题。您的课程不是So 的类型,这两个对象将基于哪个属性或条件方法? 您必须使您的类为Comparable类型。和,根据您的需要覆盖该方法

  • 我按直接顺序列出了列表1<代码>列表 如何更改顺序。我不知道如何重写扩展类中的方法,请用例子写或说清楚。

  • 问题内容: 我将要有一个固定的项目清单,直到有一个随机化步骤,我才能运行查询直到执行该查询为止。 我想要以下内容: 假设is_launch_set将返回1,3,7,11,但已被随机分配到以下位置: 关于如何实现这一目标的任何想法?我在想也许是一个find_in_set,但不是很确定。 问题答案: 您可以使用以下任一方法来做到这一点: 要么 要么

  • 问题内容: 如何在PostgreSQL中定义一列,以使每个值都必须按顺序排列,而不是使用类型时获得的顺序,而不能使值2插入,除非该列中已存在值1才能插入该值? 问题答案: 从理论上讲,您可以使用像这样工作的约束。(但是实际上它是行不通的。) 计算行数。 评估。 比较结果。 在创建CHECK约束之前,您可能必须插入一行。如果您不这样做,则max(column)将返回NULL。一排 计算行数(1)。