【问题标题】:Is there a sorted Map that can replace keys是否有可以替换键的排序地图
【发布时间】:2013-10-18 11:32:23
【问题描述】:

是否有任何 Java 库具有已排序的 Map(例如 TreeMap)但能够替换 keys?例如,我正在寻找可以替代treeMapInstance.firstKey() 的东西。速度是相当重要的,这就是为什么我不是一个存储值、删除然后将值放回新键中的人。

在我的应用程序中,我可能有一个对象,例如

TreeMap<Long, Double> foo = new TreeMap<Long, Double>();

有时我想更改foo 中的键而不更改关联值。

foo.put(1l, 1.0);
foo.put(2l, 2.0);

在上面的例子中,我怎样才能有效地将key 1l 更改为5l

【问题讨论】:

  • 您的具体功能要求是什么?
  • TreeMap 的结构反映了其键之间的比较结果。改变其中一个键的值可能会破坏其速度所依赖的不变量。
  • “替换键”是什么意思?举个例子
  • 如果你关心速度,删除和插入的速度和重命名是一样的。因为这些值是排序的(通常在树中)并且重命名意味着它们必须将它们从它们所在的位置删除并添加到它应该使用新键的位置..
  • 以 2l 作为现有键将 1l 更改为 5l 需要重新构建树。 1l 属于 2l 的左边。 5l 属于 2l 的右边。

标签: java map replace treemap sortedmap


【解决方案1】:

TreeMapboth put() and remove() are O(log n) 中,因此删除后添加是一个很好的起点。如果我是你,我会使用它然后分析应用程序以查看实际瓶颈在哪里。我的钱花在了其他地方。

【讨论】:

  • 而且我认为添加/删除组合所做的工作不会比在保留 TreeMap 结构的同时更改键所需的工作更多。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2021-06-14
  • 2017-08-11
  • 2013-11-29
  • 2015-01-20
相关资源
最近更新 更多