我的地图看起来像这样
Map<String, <boolean, boolean, boolean, boolean>>
答案 0 :(得分:3)
我不会使用地图,这需要很多内存。特别是在你的情况下。 将值存储在一个数据数组中,并将键存储在已排序的索引数组中。 在排序数组中,您使用binSearch在data []中找到键的位置。
棘手的部分是构建阵列,而不会耗尽内存。
你不需要考虑concurreny因为你只读取数据
进一步尝试避免使用String作为键。尝试将它们转换为长 此解决方案的优点:搜索时间不超过log n。即使在最糟糕的情况下,当密钥出现哈希码时也会出现问题
答案 1 :(得分:3)
答案 2 :(得分:0)
在我看来,您可以简单地使用TreeMap
,因为由于其排序结构,它会为您提供O(log(n))
数据搜索。此外,它是合格的方法,因为正如您所说,所有数据都将在启动时加载。
答案 3 :(得分:0)
如果你需要将所有内容保存在内存中,那么你需要使用一些库来使用这些元素,例如Huge collections。最重要的是,如果写入的数量很大,那么你还必须考虑一些更复杂的解决方案,如Non-blocking hash map