I have following container in C++:
std::unordered_map::iterator> Container;
Somewhere in my code I use this container to quickly access elements in std::map container, and I can concurrently modify this map without any problems and always my iterators are valid (I remove elements from this map only in one place).
I want to reproduce this behaviour in Java, but I know that Java doesn't have something like that in standard TreeMap container.
Is there any way to save a "fast path" to some element in TreeMap, which would skip logarithmic (in time) search in this TreeMap? Should I somehow use references and create my own container, or is there some sort or "magical container" that will fit my needs?
解决方案
The equivalent to a std::unordered_map in Java is a HashMap or ConcurrentHashMap, which have expected constant-time lookups. A TreeMap is an ordered map
If you need an ordered map, then a splay tree might suit your needs - the more frequently accessed objects in a splay tree will gravitate towards the top, which reduces their lookup time. There are several Java implementations available via google. Another option is to maintain a hashmap cache of the last K elements that you've accessed from the treemap.