作者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
1F:→ fantasywater:remove(O Object)好像是O(N) 01/05 23:19
2F:→ TonyQ:PriorityQueue 不是只有针对最大或最小值在存取时有利吗? 01/06 00:10
3F:→ sbrhsieh:Node class 要适当地 override equals method。 01/06 00:12
4F:→ fantasywater:楼上是对的 我正要说我刚刚就是这样解决的XD 01/06 00:31