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,還是和類別關系不大?
性能更好指的是加載性能,訪問性能還是修改更新性能?
為什么性能更好這個問題這么重要?多快算性能好呢?你有沒有做過基準測試來量化不同的性能對系統的影響。并且明確你想達到的目標呢?
添加回答
舉報
