5 回答

TA贡献1820条经验 获得超10个赞
第一种,业务没有需求,你写第二种完全是瞎胡闹,Map的get 和 put 操作性能都是常熟级的,俩个map就是俩次get俩次put,而且增加了业务复杂度

TA贡献1802条经验 获得超10个赞
如果id是UUID/GUID,就没有必要用两层Map,因为不会有Hash Collision;如果id在不同类型之间有重复的,你就必须用两层Map。所以用一层或两层Map并不在于性能,通常你也不需要考虑性能,Map的操作是很快,及时数据量很多。如果你因为担忧Hash Collision(通常这种情况很少发生),你需要根据具体的数据结构,调整它的Hash算法或想其它的方法,多层的Map不是解决Hash Collision的一个有效的方案。另外,如果没有什么原因,最好用HashMap
,而不是ConcurrentHashMap

TA贡献1811条经验 获得超5个赞
你这个问题基本上是无法回答的。因为没有更加确切的信息和使用场景。
比如:总的数据量有多少,数据是初始化时一次加载的还是随时更新的,如果更新的话更新频率是多少,数据的访问频率是多少,是多个线程同时访问/更新,还是单线程访问/更新。更新和访问场景,是每次局部化在某种特定水果类别里访问不同id,还是和类别关系不大?
性能更好指的是加载性能,访问性能还是修改更新性能?
为什么性能更好这个问题这么重要?多快算性能好呢?你有没有做过基准测试来量化不同的性能对系统的影响。并且明确你想达到的目标呢?
添加回答
举报