我正在Java中实现缓存(显然它有get()
和put()
方法)。我有两个String键和一个Object值。
Key1 + Key2 --> Val
('" Key1" +" Key2"'是Key,Val是缓存值)
我有以下两种方法来实现基本操作的缓存。
方法1 :
拥有单一地图,比如SingleMap<<Key
,Value>>
,此处密钥是两个密钥(Key1 + Key2
)的串联。
获取方法签名:
Val SingleMap.get(Key1 + Key2){ }
放置方法签名:
void SingleMap.put(Key1 + Key2, val){ }
方法2 :
将使用两张地图
InnerMap<Key2, val>
OuterMap<Key1, InnerMap>
获取方法签名:
Val OuterMap.get(Key1).get(key2){}
放置方法签名:
Void OuterMap.put(Key1, new InnerMap(key2, val));
实现缓存的最佳方法(性能方面)是什么? 如果您有其他更好的方法,请告诉我。
答案 0 :(得分:0)
性能方面,您的第一种方法会更快,因为它只需从1张地图中获取信息。 但是,如果您正在使用此方法,则必须确保密钥始终保持相同的顺序(key1永远不能是key2),否则您必须添加key1 + key2和key2 + key1到地图。
有关收藏集效果的更多信息:http://bigocheatsheet.com/