地图中有3亿个项目

Ara*_*ram 6 java hash hashmap map

  1. 如果每个密钥都保证有一个唯一密钥(由外部密钥系统生成和强制执行),那么Map实现是否适合我?假设必须仅针对并发查找进行优化(数据在应用程序启动期间初始化一次).
  2. 这3亿个唯一密钥是否对存储/冲突有任何积极或消极的影响?
  3. 还有其他建议吗?

我的地图看起来像这样

Map<String, <boolean, boolean, boolean, boolean>>
Run Code Online (Sandbox Code Playgroud)

Ale*_*ien 3

我不会使用地图,这需要很多内存。尤其是在你的情况下。将值存储在一个数据数组中,并将键存储在排序的索引数组中。在排序数组中,您使用 binSearch 来查找 data[] 中键的位置。

棘手的部分是在不耗尽内存的情况下构建数组。

你不需要考虑并发,因为你只读取数据

进一步尝试避免使用字符串作为键。尝试将它们转换为长。
该解决方案的优点:搜索时间保证不超过 log n。即使在最坏的情况下,当键导致哈希码出现问题时