0

我在 C++ 中有以下容器:

std::unordered_map<keyType, std::map<otherKeyType, keyValue>::iterator> Container;

在我的代码中的某处,我使用此容器快速访问 std::map 容器中的元素,并且我可以同时修改此映射而不会出现任何问题,并且我的迭代器始终有效(我仅在一个地方从此映射中删除元素)。

我想在 Java 中重现这种行为,但我知道 Java 在标准 TreeMap 容器中没有类似的东西。

有没有办法将“快速路径”保存到 TreeMap 中的某个元素,这将跳过此 TreeMap 中的对数(及时)搜索?我应该以某种方式使用引用并创建自己的容器,还是有某种或“神奇的容器”可以满足我的需要?

4

1 回答 1

2

std::unordered_map在 Java 中与 a 等价的是 a HashMapor ConcurrentHashMap,它具有预期的常量时间查找。ATreeMap是有序映射

如果您需要有序地图,那么展开树可能会满足您的需求 - 展开树中访问频率更高的对象将被吸引到顶部,从而减少了它们的查找时间。google 提供了几种 Java 实现。另一种选择是维护您从树形图中访问的最后 K 个元素的哈希图缓存。

于 2013-07-10T18:21:40.483 回答