[問題] PriorityQueue 一問

看板java作者 (菸酒生)時間16年前 (2010/01/05 23:13), 編輯推噓0(004)
留言4則, 3人參與, 最新討論串1/1
想請問一下,假設我自訂一個佇列如下: ------------------------------------ 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

01/05 23:19, , 1F
remove(O Object)好像是O(N)
01/05 23:19, 1F

01/06 00:10, , 2F
PriorityQueue 不是只有針對最大或最小值在存取時有利嗎?
01/06 00:10, 2F

01/06 00:12, , 3F
Node class 要適當地 override equals method。
01/06 00:12, 3F

01/06 00:31, , 4F
樓上是對的 我正要說我剛剛就是這樣解決的XD
01/06 00:31, 4F
文章代碼(AID): #1BGrRyOV (java)