Java TreeMap中的关键更新

时间:2015-09-09 16:58:11

标签: java data-structures priority-queue treemap red-black-tree

是否有机会在一次传递中更新TreeMap中最小键入口(firstEntry())的键? 因此,例如,如果我使用pollFirstEntry(),则需要O(log n)时间来检索和删除条目。然后,我创建一个带有所需键的新条目并将其放回TreeMap,它也需要O(log n)时间。因此,我花费O(2 log n)时间,在逻辑上可能只是O(1 + log n)=(log n)时间。

我很乐意避免删除该条目,但在firstEntry()方法捕获时更新它。 如果TreeMap无法实现,那么任何人都可以建议像数据结构那样的替代PriorityQueue,尽可能更新最少条目的密钥。

1 个答案:

答案 0 :(得分:1)

O(2 log N)被正确地视为O(log N)。但是没有,不能像在地图中的条目中那样改变到另一个位置(在树中)。几乎唯一没有这个数据结构的是一个键值对列表,这是一个可怕的O(N)或您可能想要的O(N/2)

如果密钥可以用作巨大数组中的索引,则O(1)将保持,仍然有2个操作。