【问题标题】:Question about Priority Queue's in Java关于Java中优先级队列的问题
【发布时间】:2011-06-05 23:54:55
【问题描述】:

是否可以有一个具有相同密钥的优先级队列?

所以有像 这样的条目。然后,当存在该密钥的买卖时,当我有具有相同密钥的条目时,请删除这些条目。我认为它会像 if 语句一样工作

如果 && { 然后从队列中删除这两个条目; }

类似的东西。

【问题讨论】:

  • 对于您所描述的:为什么您需要两个具有相同键的元素?只需在插入新元素之前检查密钥是否已在其中,如果确实如此,则不要添加新密钥,而是删除旧密钥...(我假设您的密钥为“100”)跨度>
  • 和 不是同一个键。我想您需要编写自己的代码来检查是否有匹配的订单,然后再在队列中插入新订单。
  • 好的,有道理,在我进入队列之前检查是否已经存在。似乎一点都不难。我试试看谢谢!

标签: java priority-queue


【解决方案1】:

问。是否可以有一个具有相同密钥的优先级队列?

A.可以,但是请参阅有问题的 cmets,有针对您的任务建议的有效解决方案。

查看第 3 张幻灯片了解更多详情,

http://ww3.algorithmdesign.net/handouts/Heap.pdf

编码愉快!

【讨论】:

  • 这不是关于一般优先级队列的理论问题,而是关于 java 的优先级队列
  • @amit,那么在 java 中不可能吗?
  • 是的,但是您的解释为什么是错误的(更好的解释将参考 javadocs 或给出一个代码示例显示它是可能的),另外:虽然他的问题是“是否有可能有 2 个元素在具有相同密钥的优先队列中”,从他的问题中可以清楚地看出这不是他真正需要的(查看 cmets 以获得可能的更好解决方案)。
  • 附注在java中,同一个元素可以在一个prio-queue中出现两次,而且它们显然有相同的key...
  • @amit 的问题很简单,[复制并粘贴] 是否可以使用相同的密钥创建优先级队列?答案是肯定的。因为他没有第二个问题,比如你能给我举个例子吗?这说明唐尼足够聪明,可以为自己编写代码。
猜你喜欢
  • 2014-05-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多