java嵌套映射数据结构读写操作
我的数据结构如下:-java嵌套映射数据结构读写操作,java,multithreading,hashmap,Java,Multithreading,Hashmap,我的数据结构如下:- Map<String,Map<String,List<CustomPOJO>>> Map 此数据结构上的读取操作频率太高,写入操作也会有,但不会太多 就阅读而言,我想使用simplejava.util.HashMapAPI是没有问题的 对于写操作,可以有两种方法:- 将整个数据放入ConcurrentHashMap并使用它将数据写入其中 在同步块/方法中执行所有写操作,并使用simplejava.util.HashMapAPI 请建
Map<String,Map<String,List<CustomPOJO>>>
Map
此数据结构上的读取操作频率太高,写入操作也会有,但不会太多
就阅读而言,我想使用simplejava.util.HashMap
API是没有问题的
对于写操作,可以有两种方法:-
ConcurrentHashMap
并使用它将数据写入其中java.util.HashMap
API请建议哪一个更适合写操作,并建议读操作是否有漏洞。我认为这篇文章最适合你的问题,有解释。我个人认为您应该使用ConcurrentHashMap,因为它允许读者在不阻塞所有hashmap的情况下进行阅读。
首先,外部映射的键字符串值的可预测性如何?如果在设计时这一切都是可预测的,我宁愿将其转换为枚举,并使用枚举映射来保存外部映射。这同样适用于内部贴图。那样的话,你的问题就变成了
EnumMap<Enum, EnumMap<Enum, List<POJO>>>
枚举映射
而且已经完全解决了
第二,由于您使用的是映射结构的映射,并且在性能很重要的环境中使用,因此我假设外部映射中的键的数量可能与同步映射的数量相同,在同步映射可以击败并发hashmap的用例并不多。