2011-06-05 104 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