Java中TreeMap的并发修改

Java中TreeMap的并发修改,java,c++,iterator,Java,C++,Iterator,我在C++中有以下容器: std::unordered_map<keyType, std::map<otherKeyType, keyValue>::iterator> Container; std::无序映射容器; 在我的代码中的某个地方,我使用这个容器快速访问std::map容器中的元素,我可以毫无问题地同时修改这个映射,并且我的迭代器总是有效的(我只在一个地方从这个映射中删除元素) 我想在Java中重现这种行为,但我知道Java在标准TreeMap容器中没有类似

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

std::unordered_map<keyType, std::map<otherKeyType, keyValue>::iterator> Container;
std::无序映射容器;
在我的代码中的某个地方,我使用这个容器快速访问std::map容器中的元素,我可以毫无问题地同时修改这个映射,并且我的迭代器总是有效的(我只在一个地方从这个映射中删除元素)

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


是否有任何方法可以保存到树映射中某个元素的“快速路径”,从而跳过此树映射中的对数(时间)搜索?我应该以某种方式使用引用并创建自己的容器,还是有某种排序或“神奇的容器”可以满足我的需要?

Java中的
std::unordered_map
等价于
HashMap
ConcurrentHashMap
,它们需要固定时间的查找。
TreeMap
是一个有序映射


如果您需要一个有序的贴图,那么a可能会满足您的需要—在一个八字树中,访问频率较高的对象将被吸引到顶部,从而减少它们的查找时间。google提供了几种Java实现。另一个选项是维护从树映射访问的最后K个元素的hashmap缓存。

是的,我知道。问题是,这个“内部地图”必须是有序地图。据我所知,HashMaps没有订购。好的,谢谢你,但我还有一个问题。是否可以使用C++在java中实现有序映射及其迭代器,或者仅用指针(这就是为什么我可以在C++中,而不是在爪哇中)实现它的可能。@ GLUBNES使用C++指针的大多数数据结构/算法直接转换成使用java引用的类似数据结构/算法,但例外情况是,如果你做的事情像指针算法,在java中没有类似的算法。