作者fantasywater (菸酒生)
看板java
標題[問題] PriorityQueue 一問
時間Tue Jan 5 23:12:58 2010
想請問一下,假設我自訂一個佇列如下:
------------------------------------
PriorityQueue<Node> a = new PriorityQueue<Node>();
Node b = new Node(1, 1.0); // Node(int m,double n)
Node c = new Node(3, 3.0);
a.add(b);
a.add(c);
------------------------------------
我現在想刪除 b,內建的方式是 a.remove(b) 可以刪掉b這個node
但是如果我現在 Node q = new Node(1, 1.0);
a.remove(q)
這麼做卻無法刪掉b這個node。
想請問一下如果我只知道node裡面的內容(1, 1.0)的時候,
有什麼方法可以刪掉 b 這個node?
我知道好像可以用 iterator 去 trace, 但是這樣做的時間是O(N),
不知道有沒有辦法做到O(logN)?
還是其實 PriorityQueue 裡面的 remove 方法就是O(N)呢 @_@?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.107.146
→ fantasywater:remove(O Object)好像是O(N) 01/05 23:19
→ TonyQ:PriorityQueue 不是只有針對最大或最小值在存取時有利嗎? 01/06 00:10
→ sbrhsieh:Node class 要適當地 override equals method。 01/06 00:12
→ fantasywater:樓上是對的 我正要說我剛剛就是這樣解決的XD 01/06 00:31