当前位置: 首页 > 面试题库 >

Java-PriorityQueue与排序的LinkedList

朱通
2023-03-14
问题内容

哪个实现不太“繁重”:PriorityQueue或排序的LinkedList(使用Comparator)?

我想对所有项目进行排序。插入将非常频繁,有时我将必须运行所有列表以进行一些操作。


问题答案:

A
LinkedList是最糟糕的选择。要么使用ArrayList(或更一般地说,是一个RandomAccess实现者),要么PriorityQueue。如果确实使用列表,则仅在遍历列表内容之前对其进行排序,而不是在每次插入之后对其进行排序

有一点要注意的是,PriorityQueue迭代器 提供顺序的元素; 您实际上必须删除元素(清空队列)以按顺序遍历其元素。



 类似资料:
  • 我正在初始化一个优先级队列,如下所示: 我的比较器类的代码是: 运行模拟后,元素根本没有排序——它们是随机的;我在我的FuelPriority类的compare方法中设置了一个断点,但它根本没有被调用。我错过什么了吗?

  • 我试图使用PriorityQueue对字符串列表进行排序并删除重复项。最初我使用PriorityQueue,它不会更改顺序。我换了树集后,它起作用了。但是,我想了解优先级队列和定义比较器的问题是什么。想听听解释。

  • 我不完全理解如何对自定义对象使用Java PriorityQueue(最大堆)。 我正在研究LeetCode问题,代码必须按单词长度对句子中的单词重新排序。我的直觉是,我可以使用PriorityQueue来为我进行单词排序。为此,我想我可以使用自定义对象跟踪单词: 然后: 我用来测试的第一句话是“”。(来自LC帖子。) 我希望的顺序是:“”(最短到最长的语序) 但是当我运行上面的代码并检查调试器中

  • 我知道关于这个问题有很多答案。我试着跟随它,但它不会显示我想要的结果。有一个 输入 603 502 201 402 303 301 我希望 输出 60 3 50 2 40 2 30 3 30 1 20 1 但是如果我打印优先级队列,它将显示 60 3 50 2 40 2 20 1 30 3 30 1 我不知道为什么。。 下面是我的代码

  • 主要内容:1 什么是Java Queue接口,2 Java Queue接口的语法,3 Java Queue接口的方法,4 什么是Java PriorityQueue,5 Java PriorityQueue的语法,6 Java PriorityQueue的例子1 什么是Java Queue接口 Java Queue接口以FIFO(先进先出)的方式对元素进行排序。在FIFO中,首先删除第一个元素,最后删除最后一个元素。 2 Java Queue接口的语法 3 Java Queue接口的方法 方法

  • 如何将按排序顺序转换为而不更改()?我们希望保留和。 将2,3,1添加到将其排序为1,2,3。从创建一个将具有2,3,1的顺序。中的和方法也将具有2,3,1的顺序。我猜这与的实现有关。