看板 java 關於我們 聯絡資訊
想請問一下,假設我自訂一個佇列如下: ------------------------------------ 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