Java中TreeMap的并发修改

时间:2013-07-10 18:16:41

标签: java c++ iterator

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

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

在我的代码中的某处我使用这个容器来快速访问std :: map容器中的元素,我可以同时修改这个map而没有任何问题,并且我的迭代器总是有效的(我只在一个地方删除了这个地图中的元素)

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

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

1 个答案:

答案 0 :(得分:2)

与Java中的std::unordered_map相当的是HashMapConcurrentHashMap,它们具有预期的恒定时间查找。 TreeMap是有序地图

如果您需要有序地图,那么splay tree可能符合您的需求 - 展开树中访问频率较高的对象会向顶部移动,这会缩短查找时间。有几种Java实现可以通过谷歌。另一个选项是维护您从树形图中访问的最后K个元素的哈希映射缓存。