【发布时间】:2010-05-20 23:22:45
【问题描述】:
我正在寻找一个好的哈希映射实现。具体来说,它适用于创建大量地图,其中大部分都很小。所以内存是个问题。它应该是线程安全的(尽管丢失奇数 put 可能是一个不错的折衷方案,以换取更好的性能),并且 get 和 put 都快。我也想要一根棍子上的月亮,请带着正义的副秩序。
我知道的选项是:
哈希映射。灾难性的非线程安全。
并发哈希映射。我的第一选择,但这占用大量内存 - 每个实例大约 2k。
Collections.sychronizedMap(HashMap)。这对我来说没问题,但我确信必须有更快的替代方案。
Trove 或 Colt - 我认为它们都不是线程安全的,但也许代码可以调整为线程安全的。
还有其他人吗?关于什么时候什么比什么好有什么建议吗? Java 可以使用哪些真正好的新哈希映射算法来实现?
提前感谢您的意见!
【问题讨论】:
-
不要忘记古老的哈希表。已弃用,但仍可在遗留 Java 代码中找到。
-
@Uri:它是带有小写 t 的 Hashtable :) 谈到传统......
-
您还可以通过调整 concurrencyLevel 构造函数参数来设法扩展 ConcurrentHashMap 的占用空间。
标签: java multithreading hashmap