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
此数据结构上的读取操作频率太高,写入操作也会有,但不会太多

就阅读而言,我想使用simple
java.util.HashMap
API是没有问题的

对于写操作,可以有两种方法:-

  • 将整个数据放入
    ConcurrentHashMap
    并使用它将数据写入其中

  • 在同步块/方法中执行所有写操作,并使用simple
    java.util.HashMap
    API


  • 请建议哪一个更适合写操作,并建议读操作是否有漏洞。

    我认为这篇文章最适合你的问题,有解释。我个人认为您应该使用ConcurrentHashMap,因为它允许读者在不阻塞所有hashmap的情况下进行阅读。

    首先,外部映射的键字符串值的可预测性如何?如果在设计时这一切都是可预测的,我宁愿将其转换为枚举,并使用枚举映射来保存外部映射。这同样适用于内部贴图。那样的话,你的问题就变成了

    EnumMap<Enum, EnumMap<Enum, List<POJO>>>
    
    枚举映射 而且已经完全解决了


    第二,由于您使用的是映射结构的映射,并且在性能很重要的环境中使用,因此我假设外部映射中的键的数量可能与同步映射的数量相同,在同步映射可以击败并发hashmap的用例并不多。