0

当我需要时使用什么数据结构

  • 按优先级访问对象 - 出列
  • 按名称/ID 访问对象以更新优先级

使用 Java 的 PriorityQueue,我不能直接通过名称/id 属性访问节点,可以吗?


我在考虑使用优先级队列和 TreeMap,这样我就可以在 log(n) 时间内按名称搜索,然后修改优先级。但我怀疑队列会知道这一点吗?在那种情况下,我需要删除并重新添加节点吗?这值得开销吗?删除/重新添加节点有多复杂?

4

1 回答 1

1

在那种情况下,我需要删除并重新添加节点吗?

是的。

这值得开销吗?

这取决于您的要求。只有你知道。

删除/重新添加节点有多复杂?

从 PriorityQueue 中插入和删除是 O(log n)。

于 2012-09-12T13:14:18.830 回答