- 如果他们每个人都保证有一个唯一的 key (生成和 由外部键控系统强制执行),其中 Map 实现是 适合我吗?假设这必须针对 仅并发查找(数据在执行过程中初始化一次 应用程序启动)。
- 这 3 亿个唯一键是否有任何积极或消极的 对分桶/碰撞的影响?
- 还有其他建议吗?
我的 map 看起来像这样
Map<String, <boolean, boolean, boolean, boolean>>
最佳答案
我不会使用 map ,这需要很多内存。特别是在你的情况下。 将值存储在一个数据数组中,并将键存储在排序的索引数组中。 在排序的数组中,您使用 binSearch 查找数据 [] 中键的位置。
棘手的部分是在不耗尽内存的情况下构建数组。
你不需要考虑并发,因为你只从数据中读取
进一步尝试避免使用字符串作为键。尝试将它们转换为长。
此解决方案的优点:搜索时间保证不超过 log n。即使在最坏的情况下, key 会导致哈希码出现问题
关于java - map 中的 3 亿个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14538963/