我正在寻找一个好的 HashMap 实现。具体来说,它适用于创建大量 map ,其中大部分都很小。所以内存是个问题。它应该是线程安全的(虽然丢失奇数 put 可能是为了获得更好的性能而做出的妥协),并且对于 get 和 put 来说都应该很快。我还想要一根棍子上的月亮,请附上正义的命令。
我知道的选项是:
HashMap 。灾难性的非线程安全。
并发 HashMap 。我的第一选择,但这会占用大量内存 - 每个实例大约 2k。
Collections.sychronizedMap(HashMap)。这对我来说没问题,但我确信一定有更快的替代方案。
Trove 或 Colt - 我认为它们都不是线程安全的,但也许代码可以调整为线程安全的。
还有其他的吗?关于什么时候胜过什么的任何建议? Java 可以使用的任何非常好的新 HashMap 算法的实现?
预先感谢您的输入!
最佳答案
Collections.synchronizedMap()
简单地使所有 Map
方法同步
。
ConcurrentMap
确实是您想要的接口(interface),并且有多种实现(例如ConcurrentHashMap
、ConcurrentSkipList
)。它有几个 Map
没有的操作,这些操作对于线程安全操作并不重要。此外,它比同步的 Map
更细粒度,因为操作只会锁定支持数据结构的一部分,而不是整个结构。
关于Java:多线程映射:实现比较如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878581/