我在C ++中有以下容器:
std::unordered_map<keyType, std::map<otherKeyType, keyValue>::iterator> Container;
在我的代码中的某处我使用这个容器来快速访问std :: map容器中的元素,我可以同时修改这个map而没有任何问题,并且我的迭代器总是有效的(我只在一个地方删除了这个地图中的元素)
我想在Java中重现这种行为,但我知道Java在标准的TreeMap容器中没有类似的东西。
有没有办法将“快速路径”保存到TreeMap中的某个元素,这会在此TreeMap中跳过对数(及时)搜索?我应该以某种方式使用引用并创建自己的容器,还是有某种符合我需要的“神奇容器”?
答案 0 :(得分:2)
与Java中的std::unordered_map
相当的是HashMap
或ConcurrentHashMap
,它们具有预期的恒定时间查找。 TreeMap
是有序地图
如果您需要有序地图,那么splay tree可能符合您的需求 - 展开树中访问频率较高的对象会向顶部移动,这会缩短查找时间。有几种Java实现可以通过谷歌。另一个选项是维护您从树形图中访问的最后K个元素的哈希映射缓存。