2011-06-05 95 views
0

是否有可能使用相同的密钥拥有优先级队列?关于Java中的优先级队列的问题

所以有条目,如< 100,购买> < 100,出售>。那么当有买入和卖出该密钥的同一密钥的条目时,请删除这些条目。我想它会一起工作就像if语句

如果< 100,买> & & < 100,卖> { 然后从队列中这两个条目; }

就是这样的。

+0

对于你所描述的:为什么你需要两个具有相同密钥的元素?只需在插入新元素之前检查,如果密钥已经在,如果是,则不要添加新密钥,而要删除旧密钥...(我假设您的密钥为'100') – amit 2011-06-05 15:10:36

+0

<100, sell>和<100, buy>不是同一个关键。我想你需要编写自己的代码来检查在你的队列中插入新订单之前是否有匹配的订单。 – toto2 2011-06-05 15:12:31

+0

好吧,在我进入队列检查之前,看看是否已经存在,这是有道理的。似乎并不困难。我试试看,谢谢! – Donnie 2011-06-05 15:16:36

回答

2

问:是否可以使用相同的密钥拥有优先级队列?

答:可以,但请参考问题中的评论,提出了针对您的任务的有效解决方案。

检查幻灯片编号3的更详细,

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

编码愉快!

+0

这不是关于一般优先级队列的理论问题,它是关于java的优先队列 – amit 2011-06-05 15:18:06

+0

@amit,那么在java中是不可能的? – doNotCheckMyBlog 2011-06-05 15:25:46

+0

它是,但你的解释为什么是错的(更好的解释将引用javadocs或给出一个代码示例显示它是可能的),加上:虽然他的问题是“是否有可能有一个prio队列中的2个元素同样的关键“,从他的问题中可以清楚地看到他不是真正需要的东西(查看可能的更好解决方案的意见)。 – amit 2011-06-05 15:30:54